资源简介

图像边缘检测matlab源码kirsch、Laplacian、prewitt、roberts、Sobel算子(亲测可用已经调试注释完整)

资源截图

代码片段和文件信息


clear
clc
close all
bw=imread(‘C:\Users\qlt\Desktop\1.jpg‘);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%对图象进行预处理

%画出原始图象
bw1=rgb2gray(bw);
figure(1)
imshow(bw1)
title(‘原始图象‘)

%对图象进行均值滤波处理
bw2=filter2(fspecial(‘average‘3)bw1);
figure(2)
imshow(bw2)
title(‘均值滤波‘)

%对图象进行高斯滤波处理
bw3=filter2(fspecial(‘gaussian‘)bw2);
figure(3)
imshow(bw3)
title(‘高斯滤波‘)

%利用小波变换对图象进行降噪处理
[thrsorhkeepapp]=ddencmp(‘den‘‘wv‘bw3);     %获得除噪的缺省参数
bw4=wdencmp(‘gbl‘bw3‘sym4‘2thrsorhkeepapp);%图象进行降噪处理
figure(4)
imshow(bw4)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%提取图象边缘
t=1200 ;                        %设定阈值
colormap(gray(256));          %设定调色板
bw5=double(bw4);             %把图变为十进制数
[mn]=size(bw5);               %得到图像的大小(长和宽)
g=zeros(mn);              %定义一个大小为S的零矩阵
%利用Sobel算子进行边缘提取
for i=2:m-1
  for j=2:n-1
       d1 =(5*bw5(i-1j-1)+5*bw5(i-1j)+5*bw5(i-1j+1)-3*bw5(ij-1)-3*bw5(ij+1)-3*bw5(i+1j-1)-3*bw5(i+1j)-3*bw5(i+1j+1))^2; 
       d2 =((-3)*bw5(i-1j-1)+5*bw5(i-1j)+5*bw5(i-1j+1)-3*bw5(ij-1)+5*bw5(ij+1)-3*bw5(i+1j-1)-3*bw5(i+1j)-3*bw5(i+1j+1))^2;  
       d3 =((-3)*bw5(i-1j-1)-3*bw5(i-1j)+5*bw5(i-1j+1)-3*bw5(ij-1)+5*bw5(ij+1)-3*bw5(i+1j-1)-3*bw5(i+1j)+5*bw5(i+1j+1))^2; 
       d4 =((-3)*bw5(i-1j-1)-3*bw5(i-1j)-3*bw5(i-1j+1)-3*bw5(ij-1)+5*bw5(ij+1)-3*bw5(i+1j-1)+5*bw5(i+1j)+5*bw5(i+1j+1))^2; 
       d5 =((-3)*bw5(i-1j-1)-3*bw5(i-1j)-3*bw5(i-1j+1)-3*bw5(ij-1)-3*bw5(ij+1)+5*bw5(i+1j-1)+5*bw5(i+1j)+5*bw5(i+1j+1))^2; 
       d6 =((-3)*bw5(i-1j-1)-3*bw5(i-1j)-3*bw5(i-1j+1)+5*bw5(ij-1)-3*bw5(ij+1)+5*bw5(i+1j-1)+5*bw5(i+1j)-3*bw5(i+1j+1))^2; 
       d7 =(5*bw5(i-1j-1)-3*bw5(i-1j)-3*bw5(i-1j+1)+5*bw5(ij-1)-3*bw5(ij+1)+5*bw5(i+1j-1)-3*bw5(i+1j)-3*bw5(i+1j+1))^2; 
       d8 =(5*bw5(i-1j-1)+5*bw5(i-1j)-3*bw5(i-1j+1)+5*bw5(ij-1)-3*bw5(ij+1)-3*bw5(i+1j-1)-3*bw5(i+1j)-3*bw5(i+1j+1))^2; 
       
       g(ij)=round(sqrt(d1+d2+d3+d4+d5+d6+d7+d8)); %梯度模取整
    end
end 
for i=1:m
  for j=1:n
  if g(ij)>t
  bw5(ij)=255;              %将梯度值与阈值比较 ,大于T则把图像的灰度变为255,小于T则把图像的灰度变为0
  else
  bw5(ij)=0;
    end
  end
end
%显示边缘提取后的图象
figure(5)
imshow(bw5)
title(‘kirsch边缘检测‘)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-04-01 10:18  边缘检测matlab\
     文件        2439  2019-04-01 10:17  边缘检测matlab\kirsch.m
     文件         702  2019-04-01 09:56  边缘检测matlab\Laplacian.m
     文件         665  2019-04-01 10:02  边缘检测matlab\prewitt.m
     文件        2439  2019-04-01 10:16  边缘检测matlab\roberts.m
     文件         537  2019-04-01 10:03  边缘检测matlab\Sobel.m

评论

共有 条评论