| 1 | 1/1 | 返回列表 |
| 查看: 299 | 回復(fù): 0 | ||
[求助]
下面的Canny邊緣提取代碼錯在哪里?
|
|
下面的程序錯在哪里,為什么提取出的邊緣圖像全黑,而如果刪掉高斯濾波代碼,反而能夠出來結(jié)果? I=imread('F:\rose.jpg');%讀入原始圖片 figure, imshow(I),title('原圖'); Y=rgb2gray(I); %把彩色圖片轉(zhuǎn)化成灰度圖片,256級 figure, imshow(Y),title('灰度圖像'); I1=double(Y); [m,n]=size(I1); %(1)用高斯濾波器平滑圖像 sigma=2;N=5;%定義高斯參數(shù) [d,f]=meshgrid([-(N-1)/2 N-1)/2],[-(N-1)/2 N-1)/2]);g=exp(-((d.*d+f.*f)/(2*sigma.*sigma))); S=conv2(Y,g,'same');%二維卷積得到高斯濾波后的圖象 I1=mat2gray(S);%歸一化,使矩陣中每個元素的值都在0-1之間 % gaussian=[1/79 2/79 3/79 2/79 1/79; 2/79 4/79 6/79 4/79 2/79; 3/79 6/79 7/79 6/79 3/79; 2/79 4/79 6/79 4/79 2/79; 1/79 2/79 3/79 2/79 1/79]; % I1 =conv2(I1,gaussian); imshow(I1);title('高斯濾波結(jié)果'); %(2)用一階偏導(dǎo)的有限差分來計算梯度的幅值和方向; IP=zeros(m,n); IQ=zeros(m,n); f=zeros(m,n); a=zeros(m,n); for x=1:m-1 for y=1:n-1 IP(x,y)=(I1(x,y+1)-I1(x,y)+I1(x+1,y+1)-I1(x+1,y))/2; IQ(x,y)=(I1(x,y)-I1(x+1,y)+I1(x,y+1)-I1(x+1,y+1))/2; f(x,y)=sqrt(IP(x,y)^2+IQ(x,y)^2);%梯度幅值矩陣 a(x,y)=0; if(IP(x,y)<0) a(x,y)=atan(IQ(x,y)/IP(x,y))+pi/2; else a(x,y)=atan(IQ(x,y)/IP(x,y)); end end end % H1 = [-1 -1; 1 1]; % H2 = [1 -1; 1 -1]; % fx = conv2(I1,H1); % fy = conv2(I1,H2); % f = sqrt(fx.^2 + fy.^2); % a = atan(fx./eps(fy)); for i = 1:m for j = 1:n if(a(i,j) > -pi/8 && a(i,j) <= pi/8) a(i,j) = 0; elseif(a(i,j) > pi/8 && a(i,j) <= 3*pi/8) a(i,j) = 1; elseif((a(i,j) > 3*pi/8 || a(i,j) <= -3*pi/8)) a(i,j) = 2; else a(i,j) = 3; end end end %(3)對梯度幅值進(jìn)行非極大值抑制; F = f; for i =2 m-1) for j=2 n-1) switch(a(i,j)) case 0 if(F(i,j) <= F(i,j-1) || F(i,j) <= F(i,j+1)) f(i,j) = 0; end case 1 if(F(i,j) <= F(i-1,j+1) || F(i,j) <= F(i+1,j-1)) f(i,j) = 0; end case 2 if(F(i,j) <= F(i-1,j) || F(i,j) <= F(i+1,j)) f(i,j) = 0; end case 3 if(F(i,j) <= F(i-1,j-1) || F(i,j) <= F(i+1,j+1)) f(i,j) = 0; end end end end figure,imshow(f),title('非極大值抑制后結(jié)果'); %step4:用雙閾值算法檢測和連接邊緣。 t1 =str2double(get(handles.edit1,'string'));%低閾值 t2 =str2double(get(handles.edit2,'string'));%高閾值 Canny_1 = zeros(m,n); Canny_2 = zeros(m,n); for i = 1:m for j =1:n if(f(i,j) >= t1 ) Canny_1(i,j) = 255; else Canny_1(i,j) = 0; end if(f(i,j) >= t2 ) Canny_2(i,j) = 255; else Canny_2(i,j) = 0; end end end for i = 2 m-1) for j = 2 n-1) if((Canny_1(i,j)==255) && (Canny_2(i,j)~=255)) if((Canny_2(i-1,j-1)==255) || (Canny_2(i-1,j)==255) || (Canny_2(i-1,j+1)==255)|| ( Canny_2(i,j-1)==255 ) || (Canny_2(i,j+1)==255) || (Canny_2(i+1,j-1)==255) || (Canny_2(i+1,j)==255) ||(Canny_2(i+1,j+1) ==255)) Canny_2(i,j)=255; end end end end Canny=Canny_2; title('Canny算子提取的邊緣'); |
找到一些相關(guān)的精華帖子,希望有用哦~
| 1 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 能源材料化學(xué)課題組招收碩士研究生8-10名 +5 | 脫穎而出 2026-03-16 | 15/750 |
|
|---|---|---|---|---|
|
[考研] 機(jī)械專碩299求調(diào)劑至材料 +3 | kkcoco25 2026-03-16 | 4/200 |
|
|
[考研] 化學(xué)求調(diào)劑 +4 | 臨澤境llllll 2026-03-17 | 5/250 |
|
|
[考研] 085700資源與環(huán)境308求調(diào)劑 +12 | 墨墨漠 2026-03-18 | 13/650 |
|
|
[考研] 一志愿華中科技大學(xué),080502,354分求調(diào)劑 +5 | 守候夕陽CF 2026-03-18 | 5/250 |
|
|
[考研] 材料專業(yè)求調(diào)劑 +6 | hanamiko 2026-03-18 | 6/300 |
|
|
[考研] 294求調(diào)劑材料與化工專碩 +15 | 陌の森林 2026-03-18 | 15/750 |
|
|
[考研] 288求調(diào)劑 +16 | 于海海海海 2026-03-19 | 16/800 |
|
|
[考研] 中南大學(xué)化學(xué)學(xué)碩337求調(diào)劑 +3 | niko- 2026-03-19 | 6/300 |
|
|
[考研] 290求調(diào)劑 +7 | ^O^乜 2026-03-19 | 7/350 |
|
|
[考研] 材料學(xué)求調(diào)劑 +4 | Stella_Yao 2026-03-20 | 4/200 |
|
|
[考研] 086500 325 求調(diào)劑 +3 | 領(lǐng)帶小熊 2026-03-19 | 3/150 |
|
|
[考研] 0856調(diào)劑,是學(xué)校就去 +8 | sllhht 2026-03-19 | 9/450 |
|
|
[考研] 招收調(diào)劑碩士 +4 | lidianxing 2026-03-19 | 12/600 |
|
|
[考研] 一志愿中國海洋大學(xué),生物學(xué),301分,求調(diào)劑 +5 | 1孫悟空 2026-03-17 | 6/300 |
|
|
[考研] 081700化工學(xué)碩調(diào)劑 +3 | 【1】 2026-03-16 | 3/150 |
|
|
[考研] 328求調(diào)劑,英語六級551,有科研經(jīng)歷 +4 | 生物工程調(diào)劑 2026-03-16 | 12/600 |
|
|
[考研] 本科鄭州大學(xué)物理學(xué)院,一志愿華科070200學(xué)碩,346求調(diào)劑 +4 | 我不是一根蔥 2026-03-18 | 4/200 |
|
|
[考研] 0703化學(xué)336分求調(diào)劑 +6 | zbzihdhd 2026-03-15 | 7/350 |
|
|
[考研] 考研調(diào)劑 +3 | 淇ya_~ 2026-03-17 | 5/250 |
|