资源简介
基于形态学的matlab边缘检测小程序,亲测可用,大家放心下载吧!
代码片段和文件信息
blood = imread(‘lenna.BMP‘);
[xy]=size(blood); % 求出图象大小
b=double(blood);
N =sqrt(100) * randn(xy); % 生成方差为10的白噪声
I=b;%+N; % 噪声干扰图象
for i=1:x % 实际图象的灰度为0~255
for j=1:y
if (I(ij)>255)
I(ij)=255;
end
if (I(ij)<0)
I(ij)=0;
end
end
end
z0=max(max(I)); % 求出图象中最大的灰度
z1=min(min(I)); % 最小的灰度
T=(z0+z1)/2;
TT=0;
S0=0; n0=0;
S1=0; n1=0;
allow=0.5; % 新旧阈值的允许接近程度
d=abs(T-TT);
count=0; % 记录几次循环
while(d>=allow) % 迭代最佳阈值分割算法
count=count+1;
for i=1:x
for j=1:y
if (I(ij)>=T)
S0=S0+I(ij);
n0=n0+1;
end
if (I(ij) S1=S1+I(ij);
n1=n1+1;
end
end
end
T0=S0/n0;
T1=S1/n1;
TT=(T0+T1)/2;
d=abs(T-TT);
T=TT;
end
Seg=zeros(xy);
for i=1:x
for j=1:y
if(I(ij)>=T)
Seg(ij)=1; % 阈值分割的图象
end
end
end
SI=1-Seg; % 阈值分割后的图象求反,便于用腐蚀算法求边缘
se1=strel(‘square‘3); % 定义腐蚀算法的结构
SI1=imerode(SIse1); % 腐蚀算法
BW=SI-SI1; % 边缘检测
%=====传统的边缘检测方法======%
I=uint8(I);
BW1=edge(I‘sobel‘ 0.11);
BW2=edge(I‘log‘ 0.015);
%===========图象显示==========%
figure(1);
imshow(I);title(‘Original‘) % 显示阈值分割的图象
figure(2);
imshow(BW2);title(‘Soble‘) % 显示新算法的边缘图象
figure(3)
imshow(BW1);title(‘Gauss-Laplace‘)
figure(4)
imshow(BW);title(‘New algorithm‘)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-05-09 03:40 edgeextraction\
文件 254838 2005-05-17 15:26 edgeextraction\lenna.bmp
文件 1963 2005-05-17 15:26 edgeextraction\P0701.m
- 上一篇:超大tif图像分割为100等份
- 下一篇:matlab中的牛顿下山法
相关资源
- matlab中的牛顿下山法
- 超大tif图像分割为100等份
- matlab三相调压异步机电路
- 随机过程 布朗运动matlab仿真程序
- 多元霍夫曼编码的matlab实现
- r元霍夫曼编码的matlab实现
- MATLAB课程设计 信号的取样与恢复
- 等效电荷法计算电场
- matlab做的图像检索源码
- 基于Graphcut的图像分割(Matlab)
- matlab数字图像处理——清华大学出版
- 用MATLAB仿真markov链程序
- RBFNN的Matlab仿真
- matlab 实现的一位搜索算法和多维搜索
- 分数阶傅里叶变换MATLAB
- 语音变速变调matlab代码
- 图像处理_烟雾检测matlab代码
- 锁相环原理以及matlab仿真程序
- Matlab画图、线条颜色设置函数linspec
- 嵌入式小波零树(ezw)编码matlab程序
- MATLAB频域图像增强技术
- 基于遗传算法的投影寻踪模型matlab实
- 移相全桥matlab仿真实现
- ARFIMA预测MATLAB代码
- MATLAB万年历源码
- PM谱-matlab
- MATLAB霍夫曼Huffman编码译码GUI界面设计
- 各种数字水印的matlab源代码
- 图像检索的matlab程序
- matlab小波复合阂值算法
评论
共有 条评论