資源簡介
利用八個方向的sobel邊緣檢測,其中為防止灰度值溢出對灰度值進行一個擴大和縮放的過程,可以檢測出八個方向的灰度梯度值,檢測出的邊緣更加平緩連續,有興趣的可以了解一下。

代碼片段和文件信息
clear?all;clc
s0=[-1-2-1;000;121];
s45=[-2-10;-101;012];
s90=[-101;-202;-101];
s135=[012;-101;-2-10];
s180=[121;000;-1-2-1];
s225=[210;10-1;0-1-2];
s270=[10-1;20-2;10-1];
s315=[0-1-2;10-1;210];%八個方向的sobel算子
A=imread(‘1.bmp‘);
[uv]=size(A);
B=zeros(uv);
B1=uint16(B);%生成和原圖片大小相同的圖片但考慮經過邊緣檢測后值較大故設置為uint16
for?i=1:u
????for?j=1:v
????????B1(ij)=A(ij);
????end
end
%A=im2double(A);
image(1).x=abs(filter2(s0B1));
image(2).x=abs(filter2(s45B1));
image(3).x=abs(filter2(s90B1));
image(4).x=abs(filter2(s135B1));
image(5).x=abs(filter2(s180B1));
image(6).x=abs(filter2(s225B1));
image(7).x=abs(filter2(s270B1));
image(8).x=abs(filter2(s315B1));%進行八個方向的sobel算子圖像邊緣檢測
image1=edge(A‘sobel‘);%進行傳統的sobel算子邊緣檢測
image2=edge(A‘prewitt‘);%進行prewitt算子邊緣檢測
B2=B;
for?i=1:8
???B2=max(B2image(i).x)?;%將各個方向的sobel算子邊緣檢測的最大值匯總到一張圖片中
end
D=B2/1.5;%避免灰度值溢出,將其縮放
BB=uint8(B);
for?i=1:u
????for?j=1:v
????????BB(ij)=D(ij);
????end
end
C=graythresh(BB);
D=im2bw(BBC);%二值化
figure
imshow(A);xlabel(‘圖1:原圖‘)
figure
imshow(image1);xlabel(‘圖2:傳統sobel‘)
figure
imshow(image2);xlabel(‘圖3:prewitt算法‘)
figure
imshow(D);xlabel(‘圖4:八個方向sobel‘)
%//對縮放因子進行分析//
x1=0;x2=0;x3=0;
for?i=100:150????%選定包含目標的小區域
??????for?j=100:150
????????x1=x1+1;
????????x2=x2+image1(ij);
????????x3=x3+image2(ij);%提取出的邊緣信息求和
??????end
end
x2=x2/x1;
x3=x3/x1;
x=1:0.01:2;
for?c=1:length(x)
????x4=0;
????D=B2/x(c);%避免灰度值溢出,將其縮放
????BB=uint8(B);
???for?i=1:u
??????for?j=1:v
????????BB(ij)=D(ij);
??????end
???end
???C=graythresh(BB);
???D=im2bw(BBC);
???for?i=100:150??%選定包含目標的小區域
???????for?j=100:150
???????????x4=x4+D(ij);%八個方向Sobel提取出的邊緣信息求和
???????end
???end
???p(c)=x4/x1;%八個方向sobel邊緣檢測比例
???p1(c)=x2;%傳統sobel邊緣檢測比例
???p2(c)=x3;%prewitt邊緣檢測比例
end
figure
plot(xp‘-‘);
hold?on;
plot(xp1‘+‘);
hold?on
plot(xp2‘.‘);
legend(‘八個方向sobel‘‘傳統sobel‘‘prewitt‘);?%?legend?會自動根據畫圖順序分配圖形
xlabel(‘縮放因子‘);
ylabel(‘邊緣檢測比例‘);
hold?off;?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-05-17?16:25??邊緣檢測\
?????文件???????66614??2018-04-13?12:47??邊緣檢測\1.bmp
?????文件???????66614??2004-03-23?21:24??邊緣檢測\lena.bmp
?????文件????????2284??2018-05-10?17:28??邊緣檢測\sd.m
?????文件?????????163??2019-05-15?16:36??說明.txt
- 上一篇:模糊PID的simuli
nk仿真及結果分析 - 下一篇:matlab腦電信號處理
評論
共有 條評論