24小时热门版块排行榜    

查看: 384  |  回复: 0

汤和加菲

银虫 (小有名气)

[求助] 下面的Canny边缘提取代码错在哪里?

下面的程序错在哪里,为什么提取出的边缘图像全黑,而如果删掉高斯滤波代码,反而能够出来结果?


I=imread('F:\rose.jpg');%读入原始图片
figure, imshow(I),title('原图');
Y=rgb2gray(I); %把彩色图片转化成灰度图片,256级
figure, imshow(Y),title('灰度图像');
I1=double(Y);
[m,n]=size(I1);
%(1)用高斯滤波器平滑图像
sigma=2;N=5;%定义高斯参数
[d,f]=meshgrid([-(N-1)/2N-1)/2],[-(N-1)/2N-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('高斯滤波结果');
%(2)用一阶偏导的有限差分来计算梯度的幅值和方向;
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)对梯度幅值进行非极大值抑制;
F = f;
for i =2m-1)  
    for j=2n-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('非极大值抑制后结果');
%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 = 2m-1)
    for j = 2n-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算子提取的边缘');
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

找到一些相关的精华帖子,希望有用哦~

科研从小木虫开始,人人为我,我为人人
相关版块跳转 我要订阅楼主 汤和加菲 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +5 xvJS1BYDxvBS 2026-10-31 12/600 2026-11-02 03:11 by xzcv0Tehd8lQ
[找工作] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +5 1uaZt2kAZj2S 2026-10-31 9/450 2026-11-02 03:05 by xzcv0Tehd8lQ
[考研] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +4 1uaZt2kAZj2S 2026-10-30 20/1000 2026-11-02 02:52 by xzcv0Tehd8lQ
[硕博家园] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +4 1uaZt2kAZj2S 2026-10-30 16/800 2026-11-02 02:47 by xzcv0Tehd8lQ
[基金申请] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +7 X5bHxOULxFqb 2026-10-30 24/1200 2026-11-02 02:39 by xzcv0Tehd8lQ
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +6 X5bHxOULxFqb 2026-10-30 16/800 2026-11-02 02:34 by xzcv0Tehd8lQ
[考博] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 xvJS1BYDxvBS 2026-10-31 7/350 2026-11-01 22:01 by xzcv0Tehd8lQ
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +4 1uaZt2kAZj2S 2026-10-30 11/550 2026-11-01 21:35 by xzcv0Tehd8lQ
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +5 1uaZt2kAZj2S 2026-10-30 17/850 2026-11-01 21:26 by xzcv0Tehd8lQ
[教师之家] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +6 X5bHxOULxFqb 2026-10-30 16/800 2026-11-01 21:19 by xzcv0Tehd8lQ
[考研] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 hKe7U1kad5Sg 2026-10-31 6/300 2026-11-01 19:50 by xzcv0Tehd8lQ
[博后之家] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 1uaZt2kAZj2S 2026-10-31 8/400 2026-11-01 16:58 by BCdvBAEpt3zm
[论文投稿] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 1uaZt2kAZj2S 2026-10-30 13/650 2026-11-01 16:45 by BCdvBAEpt3zm
[基金申请] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 xvJS1BYDxvBS 2026-10-31 3/150 2026-11-01 12:53 by BCdvBAEpt3zm
[公派出国] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 1uaZt2kAZj2S 2026-10-31 7/350 2026-11-01 12:40 by BCdvBAEpt3zm
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 1uaZt2kAZj2S 2026-10-30 16/800 2026-11-01 12:14 by BCdvBAEpt3zm
[硕博家园] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 1uaZt2kAZj2S 2026-10-30 13/650 2026-11-01 12:14 by BCdvBAEpt3zm
[论文投稿] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +5 X5bHxOULxFqb 2026-10-30 26/1300 2026-11-01 10:22 by BCdvBAEpt3zm
[论文投稿] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 1uaZt2kAZj2S 2026-10-31 8/400 2026-11-01 03:59 by YXM1FDCSE8Bn
[硕博家园] 申博自荐 2篇一区TOP+1篇EI+2公开发明专利 2027博士申请 +3 小小阿光 2026-10-27 3/150 2026-10-29 23:56 by 起风了的快乐
信息提示
请填处理意见