1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 图像边缘提取——梯度算子 Roberts算子 prewitt算子 Sobel算子 Kirsch算子 LOG算子的matlab实现

图像边缘提取——梯度算子 Roberts算子 prewitt算子 Sobel算子 Kirsch算子 LOG算子的matlab实现

时间:2018-05-28 10:04:09

相关推荐

图像边缘提取——梯度算子 Roberts算子 prewitt算子 Sobel算子 Kirsch算子 LOG算子的matlab实现

#图像边缘提取——

##梯度算子、Roberts算子、prewitt算子、Sobel算子、Kirsch算子、LOG算子的matlab实现

matlab代码

clear;f=rgb2gray(imread('edge.jpg'));T=20;%阈值[m,n]=size(f);%------梯度法-------f_g=zeros(m,n);for i=2:m-1for j=2:n-1f_g(i,j)=abs(f(i+1,j)-f(i,j))+abs(f(i,j+1)-f(i,j));if f_g(i,j)<Tf_g(i,j)=0;elsef_g(i,j)=255;endendendfigure(1);subplot(2,3,1);imshow(uint8(f_g));title('梯度法');%------roberts算子-------f_r=zeros(m,n);for i=2:m-1for j=2:n-1f_r(i,j)=abs(f(i+1,j+1)-f(i,j))+abs(f(i,j+1)-f(i+1,j));if f_r(i,j)<Tf_r(i,j)=0;elsef_r(i,j)=255;endendend%f_r=imbinarize(imfilter(f,r),T);subplot(2,3,2);imshow(uint8(f_r));title('Roberts算子');%------prewitt算子-------f_p=zeros(m,n);for i=2:m-1for j=2:n-1f_p(i,j)=abs(f(i-1,j-1)+f(i,j-1)+f(i+1,j-1)-f(i-1,j+1)-f(i,j+1)-f(i+1,j+1))+abs(f(i+1,j-1)+f(i+1,j)+f(i+1,j+1)-f(i-1,j-1)-f(i-1,j)-f(i-1,j+1));if f_p(i,j)<15f_p(i,j)=0;elsef_p(i,j)=255;endendendsubplot(2,3,3);imshow(uint8(f_p));title('Prewitt算子');%------sobel算子-------f_s=zeros(m,n);for i=2:m-1for j=2:n-1f_s(i,j)=abs(f(i-1,j-1)+2*f(i,j-1)+f(i+1,j-1)-f(i-1,j+1)-2*f(i,j+1)-f(i+1,j+1))+abs(f(i+1,j-1)+2*f(i+1,j)+f(i+1,j+1)-f(i-1,j-1)-2*f(i-1,j)-f(i-1,j+1));if f_s(i,j)<Tf_s(i,j)=0;elsef_s(i,j)=255;endendendsubplot(2,3,4);imshow(uint8(f_s));title('Sobel算子');%------krisch算子-------k(:,:,1)=[-3,-3,-3;-3,0,5;-3,5,5];k(:,:,2)=[-3,-3,5;-3,0,5;-3,-3,5];k(:,:,3)=[-3,5,5;-3,0,5;-3,-3,-3];k(:,:,4)=[-3,-3,-3;-3,0,-3;5,5,5];k(:,:,5)=[5,5,5;-3,0,-3;-3,-3,-3];k(:,:,6)=[-3,-3,-3;5,0,-3;5,5,-3];k(:,:,7)=[5,-3,-3;5,0,-3;5,-3,-3];k(:,:,8)=[5,5,-3;5,0,-3;-3,-3,-3];kk=zeros(size(f));I=double(f);for i=1:8f_k(:,:,i)=conv2(I,k(:,:,i),'same');kk=max(kk,f_k(:,:,i));endf_kk=imbinarize(kk,600);subplot(2,3,5);imshow(f_kk);title('Krisch算子');%------LoG算子-------log1=[0 0 -1 0 0;0 -1 -2 -1 0;-1 -2 16 -2 -1;0 -1 -2 -1 0;0 0 -1 0 0];f_l=conv2(f,log1,'same');f_ll=imbinarize(abs(f_l),300);subplot(2,3,6);imshow(f_ll);title('LoG算子');

效果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。