資源簡介
圖像邊緣檢測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);???????????????%得到圖像的大?。ㄩL和寬)
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
評論
共有 條評論