边缘方向直方图--matlab实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mr_muli/article/details/81607119

  • 原理:

木里

  • 代码:
% 边缘方向直方图的算法具体如下:
%     (1) 图像灰度化
%     (2) 将图像进行边缘算子 (如 Sobel运 算, 得到( x, y) 点的 dx 和 dy
%     (3) 计算各个像素的边缘方向 θ( x, y) = argtg( dx / dy) 
%     (4) 将边缘方向值进行量化, 从 0°~180°量化到 0°~36°
%     (5) 将边缘方向值 θ进行直方图统计并归一化

clc;close all;clear;
rgb_img=imread('../images/8.jpg');
subplot(1,2,1);imshow(rgb_img);

% 图像灰度化
gray_img=rgb2gray(rgb_img);
[row,col]=size(gray_img);
gray_img=double(gray_img);

% 使用canny算子,提取边缘
edge_canny=edge(gray_img,'canny');
% 边缘总点数
edge_num=sum(sum(edge_canny));
subplot(1,2,2);imshow(edge_canny);

% 计算梯度矢量Gx,Gy
for cir1=2:row-1
    for cir2=2:col-1
        Gx(cir1,cir2)=sum(gray_img(cir1-1:cir1+1,cir2+1))...
            -sum(gray_img(cir1-1:cir1+1,cir2-1))...
            +gray_img(cir1,cir2+1)-gray_img(cir1,cir2-1);
        Gy(cir1,cir2)=sum(gray_img(cir1+1,cir2-1:cir2+1))...
            -sum(gray_img(cir1-1,cir2-1:cir2+1))...
            +gray_img(cir1+1,cir2)-gray_img(cir1-1,cir2);
        % 为避免分母为0,加上一个很小的值。
        Gx(cir1,cir2)=Gx(cir1,cir2)+(Gx(cir1,cir2)==0)*1e-6;
        % atan2:计算边缘方向;范围:[-pi,pi];弧度->角度: [-180,180]
        theta(cir1,cir2)=atan2(Gy(cir1,cir2),Gx(cir1,cir2))*180/pi;   
    end
end

% 将[-180,180]每10度分为一组,那么方向被量化为36 bin
TH=[-170,-160,-150,-140,-130,-120,-110,-100,-90, -80,-70,-60,-50,-40,-30,-20,-10, 0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180;...
    -180,-170,-160,-150,-140,-130,-120,-110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170];
% 存储各方向像素数目的数组
bar_hist= zeros(1,36);

% edge_theta=theta&edge_canny;
for cir1=1:row
    for cir2=1:col
        for k=1:36
            if (edge_canny(cir1,cir2)==1 & theta(cir1,cir2)<TH(1,k) & theta(cir1,cir2)>=TH(2,k))
                bar_hist(k)=bar_hist(k)+1;
            end
        end
    end
end

% 直方图归一化
bar_hist=bar_hist/sum(bar_hist);
disp(['bar_hist值为:',num2str(bar_hist)]);

% 绘图
x=1:36;
figure;
bar(TH(1,:),bar_hist(x));

猜你喜欢

转载自blog.csdn.net/mr_muli/article/details/81607119
今日推荐