小波模极大值边缘检测+膨胀+边缘跟踪+图像分割 matlab程序
能够对图像进行小波模极大值边缘检测,边缘跟踪,以及将图像分割出来
%小波模极大值边缘检测
clc;clear
% 下载图像
%load woman
file='E:\学习\论文\中期准备资料\region_seg\滤波+叠加.bmp';
I=imread(file);
%X=rgb2gray(I);
%image(X);%
%colormap(map);%
X=double(I);
a=min(size(X));
b=max(size(X));
%X=X(1:a,1:a);
X(a+1:b,1:b)=1;
SIZE=length(X); % 图像尺寸
% 多尺度
m=2.0;
delta=2^m;
% 构造高斯函数的偏导
N=20; % 滤波器长度(需要调整,必须是偶数)
A=-1/sqrt(2*pi); % 幅度
for index_x=1:N;
for index_y=1:N;
x=index_x-(N+1)/2;
y=index_y-(N+1)/2;
phi_x(index_x,index_y)=A*(x/delta^2).*exp(-(x.*x+y.*y)/(2*delta^2));
phi_y(index_x,index_y)=A*(y/delta^2).*exp(-(x.*x+y.*y)/(2*delta^2));
end
end;
phi_x=phi_x/norm(phi_x); % 能量归一化
phi_y=phi_y/norm(phi_y); % 能量归一化
% 对图象做行列卷积,求小波系数
Gx=conv2(X,phi_x,'same');
Gy=conv2(X,phi_y,'same');
% 求梯度
Grads=sqrt((Gx.*Gx)+(Gy.*Gy));
% 求幅角(梯度方向)
angle_array=zeros(SIZE,SIZE); % 角度
% 遍历
for i=1:SIZE
for j=1:SIZE
if (abs(Gx(i,j))>eps*100) % x的绝对值足够大
p=atan(Gy(i,j)/Gx(i,j))*180/pi; % 反正切求角度值(1,4象限)
if (p<0) % 负的幅角(4象限)
p=p+360;
end;
if (Gx(i,j)<0 && p>180) % 2象限的特殊处理
p=p-180;
elseif (Gx(i,j)<0 && p<180) % 3象限的特殊处理
p=p+180;
end
else % 90或270度
p=90;
end
angle_array(i,j)=p; % 幅角赋值
end
end;
% 找边缘
edge_array=zeros(SIZE,SIZE);
% 遍历
for i=2:SIZE-1
for j=2:SIZE-1
if ((angle_array(i,j)>=(-22.5) && angle_array(i,j)<=22.5) || ...
(angle_array(i,j)>=(180-22.5) && angle_array(i,j)<=(180+22.5))) % 0/180
if (Grads(i,j)>Grads(i+1,j) && Grads(i,j)>Grads(i-1,j))
edge_array(i,j)=Grads(i,j);
end
elseif ((angle_array(i,j)>=(90-22.5) && angle_array(i,j)<=(90+22.5)) || ...
(angle_array(i,j)>=(270-22.5) && angle_array(i,j)<=(270+22.5))) % 90/270
if (Grads(i,j)>Grads(i,j+1) && Grads(i,j)>Grads(i,j-1))
edge_array(i,j)=Grads(i,j);
end
elseif ((angle_array(i,j)>=(45-22.5) && angle_array(i,j)<=(45+22.5)) || ...
(angle_array(i,j)>=(225-22.5) && angle_array(i,j)<=(225+22.5))) % 45/225
if (Grads(i,j)>Grads(i+1,j+1) && Grads(i,j)>Grads(i-1,j-1))
edge_array(i,j)=Grads(i,j);
end
else % 135/215
if (Grads(i,j)>Grads(i+1,j-1) && Grads(i,j)>Grads(i-1,j+1))
edge_array(i,j)=Grads(i,j);
end
end
end
end
% 去除伪边缘
MAX_E=max(max(edge_array).'); % 最大幅度值
edge_array=edge_array/M
你可能喜欢
- 图像边缘检测算法
- hough变换
- 小波分析应用
- canny边缘检测
- 彩色图像
- matlab小波分析
- MATLAB的数字图像处理
- 图像边缘检测算法实验平台的构建与实现67页
- 遗传算法在图像边缘检测中的应用研究63页
- 基于图像分块的边缘检测算法4页
- 图像测量中的边缘检测与像素细分算法研究2页
- 基于边缘检测与分裂合并的图像分割算法4页
- 图像边缘检测算法的设计和研究3页
- hough变换2页
- hough变换检测圆的matlab程序 12页
- hough变换检测线段7页
- hough变换12页
- 图像处理hough变换1页
- hough变换检测椭圆的matlab源码[matlab]2页
- 语音识别中小波分析的应用31页
- 小波分析及其应用60页
- 小波分析在消噪中的应用3页
- 小波分析在各领域中的应用及展望5页
- 深圳大学 小波分析与应用课程教学大纲5页
- 2011小波分析与应用试题11页
- 基于sobel、canny的边缘检测实现5页
- canny边缘检测算子11页
- opencv实现canny边缘检测5页
- 基于canny算子的改进边缘检测3页
- canny边缘检测算法代码13页
- 图象处理中的边缘检测方法 canny19页
- 第08章 彩色图像处理50页
- 07 彩色图像处理复习29页
- 第7章彩色图像69页
- 第七章 彩色图像处理49页
- 第3章 彩色数字图像基础140页
- 简化版彩色图像处理60页


