matlab 非极大值抑制

function outImg = NonMaxLimit( dx  ,dy )
% dx、dy是图像的X、Y方向的梯度
    dxy0 = sqrt(dx.^2 + dy.^2);

    dxy = zeros( size(dxy0) + 2 );
    dxy(2:end-1,2:end-1) = dxy0;

    bw = graythresh(dxy0);

    outImg = zeros( size(dx) );
    for ii = 1:size(dx,1)
        for jj = 1:size(dx,2)
            the = atan2( dx(ii,jj) , dy(ii,jj));
            absX = abs( dx(ii,jj) );
            absY = abs( dy(ii,jj) );
            if absX > absY
                weight = absY / absX;
            else
                weight = absX / absY;
            end
%             1 8 7
%             2 * 6
%             3 4 5
            v1 = dxy(ii,jj);
            v2 = dxy(ii+1,jj);
            v3 = dxy(ii+2,jj);
            v4 = dxy(ii+2,jj+1);
            v5 = dxy(ii+2,jj+2);
            v6 = dxy(ii+1,jj+2);
            v7 = dxy(ii,jj+2);
            v8 = dxy(ii,jj+1);

            if abs(dxy0(ii,jj) <= bw)
                outImg(ii,jj) = 0;
            else
                if the < -pi*3/4 || the < pi/4
                    g1 = v7;
                    g2 = v6;
                    g3 = v3;
                    g4 = v2;
                elseif (the > -pi*3/4 && pi<=-pi/2) || (the>pi/4 && the <= pi/2)
                    g1 = v7;
                    g2 = v8;
                    g3 = v3;
                    g4 = v4;
                elseif (the > -pi/2 && the<-pi/4) || (the > pi/2 && the <= pi*3/4)
                    g1 = v1;
                    g2 = v8;
                    g3 = v5;
                    g4 = v4;
                elseif (the>-pi/4 && the <= 0) || (the > pi*3/4)
                    g1 = v1;
                    g2 = v2;
                    g3 = v5;
                    g4 = v6;
                end

                dTmp1 = weight*g1 + (1-weight)*g2;
                dTmp2 = weight*g3 + (1-weight)*g4;
                if(  dxy0(ii,jj) >= dTmp1 && dxy0(ii,jj) >= dTmp2 )
                    outImg(ii,jj) = 1;
                end
        end
        end
    end

end
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

littletomatodonkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值