プリミティブ検出

プリミティブ検出

概念: プリミティブ検出とは、コンピューター ビジョンおよびパターン認識の分野で、画像内の基本的な形状または特定の局所パターンを検出および識別するプロセスを指します。プリミティブは、線分、円、長方形などの単純な幾何学的形状にすることも、コーナーやテクスチャなどのより複雑なローカル画像構造にすることもできます。

1. エッジ検出
エッジは、画像内のピクセルのグレー値の急激な変化による不連続な結果です。エッジは、個々のピクセルに割り当てられるプロパティで、そのピクセルの近傍内のイメージ関数の勾配プロパティに関連します。

エッジの大きさ: 勾配の大きさ。
エッジ方向: -90 度回転したグラデーション方向。
エッジ検出原理
(エッジ検出は、一般的なプリミティブ検出の基礎であると同時に、境界ベースの画像セグメンテーションの最初のステップでもあります。)
エッジ検出アルゴリズム: Sobel、Laplacian、および Canney 演算子。

2. コーナー (コーナー) 検出の
概念: コーナー検出は、コンピューター ビジョンの分野における重要なタスクであり、画像内のコーナー点の位置を検出することを目的としています。コーナー ポイントは画像内の特別なピクセル位置であり、その周囲の領域にはさまざまな方向に大きな勾配変化があります。コーナーポイントは通常、オブジェクトのエッジの交差点または転換点を表し、さまざまな視野角やスケールで安定性を維持する特性を持っています。

コーナー検出の主な目的は、次の特性を持つピクセル位置を画像内で見つけることです。 1. グレーのグラデーションの変化:
コーナーのピクセルの周囲の領域には、さまざまな方向に明らかなグレーのグラデーションの変化があります。グレースケール変化を受けるエッジはこの時点で収束します。
2. 孤立: コーナー ポイントは通常、画像内で比較的孤立した特徴点であり、周囲の領域のピクセルとの明らかなグレースケールの違いがあります。

一般的なコーナー検出アルゴリズムには次のものがあります。
1. Harris コーナー検出アルゴリズム: ピクセルの周囲の近傍のグレー勾配と共分散行列を計算することにより、コーナー ポイントの応答値を評価します。高い応答値を持つピクセルはコーナーポイントとみなされます。
2. Shi-Tomasi コーナー検出アルゴリズム: Harris アルゴリズムの改良版に基づいており、コーナー応答性の尺度として最小固有値を使用することで、コーナー ポイントをより適切に選択できます。
3.FAST コーナー検出アルゴリズム: ピクセルの周囲の円形近傍での効率的なピクセル比較を通じてコーナー ポイントを決定する高速コーナー検出アルゴリズム。
4. SIFT (スケール不変特徴変換) アルゴリズム: スケール空間に基づく特徴検出および記述アルゴリズム。スケールおよび回転の変化の下でコーナー ポイントを検出できます。
コーナー検出

3. ハフ変換の
概念: ハフ変換は、画像処理やコンピュータ ビジョンで一般的に使用される技術で、画像内の幾何学的形状、特に直線や円を検出するために使用されます。

一般的なハフ変換検出アプリケーション:

1. 直線検出: ハフ変換を使用して画像内の直線を検出できます。画像内で可能なすべての直線を検索し、それらのパラメトリック表現 (通常は極形式) を提供します。これは、画像内のエッジ検出と線のセグメンテーションに役立ちます。

2. 円検出: ハフ変換を使用して画像内の円を検出することもできます。線検出と同様に、画像内で考えられるすべての円を見つけて、それらのパラメトリック表現を与えることができます。これは、コンピューター ビジョンでのターゲットの認識や追跡など、円形のオブジェクトの検出と追跡に役立ちます。

3. 曲線検出: 直線と円に加えて、ハフ変換を使用して他の形状の曲線を検出することもできます。たとえば、検出したい曲線の数式形式がわかっている場合は、ハフ変換を使用して、その方程式に適合する画像内の曲線を見つけることができます。

線形検出


次の例では、コーナー点の検出に SUSAN オペレーターを使用し、直線の検出にハフ変換を使用します。

展示するmatlab代码

1. SUSAN オペレーターコーナー検出

clear;
clc;
% 读取图像
Image=imread('susan.tif');  
% 转化为灰度图像
%Image=rgb2gray(Image);
% 显示图像
%imshow(Image);
% 获取图像高宽(行烈)
[ImageHeight,ImageWidth]=size(Image);
% 这一步没太大必要
%Image=double(Image);
% 判断灰度相近的阈值
threshold=45;  
% 当前像素和窗体内像素差别在t以下的个数,即相似的个数
usan=[];
% 计算以像素为中心的窗体内包含的
% 包含37个像素的圆窗口,面积为12*pi=37,因此是以sqrt(12)为半径的原
% 没有在外围扩展图像,最终图像会缩小
for i=4:ImageHeight-3         
   for j=4:ImageWidth-3 
        %从原图中截取7*7的区域再在其中挑选圆窗
        tmp=Image(i-3:i+3,j-3:j+3);  
        %c表示灰度值相近的程度,越大越相近
        c=0;
        for p=1:7
           for q=1:7
               %7*7的区域中选取圆窗包含的像素
                if (p-4)^2+(q-4)^2<=12 
                    %usan(k)=usan(k)+exp(-(((img(i,j)-tmp(p,q))/t)^6));
                    %判断灰度是否相近,t是自己设置的
                    if abs(Image(i,j)-tmp(p,q))<threshold  
                        c=c+1;
                    end
                end
           end
        end
        usan=[usan c];
   end
end
%相当于进一步调整阈值,在threshold的基础上进一步减少角点个数
g=2*max(usan)/3;
for i=1:length(usan)
   if usan(i)<g 
       usan(i)=g-usan(i);
   else
       usan(i)=0;
   end
end
% 由于usan是一维的,所以要重新变换为二维,对应图像位置
imgn=reshape(usan,[ImageWidth-6,ImageHeight-6])';
%figure;
%imshow(imgn)
%非极大抑制
[m n]=size(imgn);
re=zeros(m,n);
for i=2:m-1
   for j=2:n-1 
        if imgn(i,j)>max([max(imgn(i-1,j-1:j+1)) imgn(i,j-1) imgn(i,j+1) max(imgn(i+1,j-1:j+1))]);
            re(i,j)=1;
        else
            re(i,j)=0;
        end
   end
end
figure;
imshow(Image)
hold on;
[x,y]=find(re==1);
plot(y,x,'*')

実行結果表示:

グレースケール画像:グレースケール画像
エッジ検出:
エッジ検出
コーナー検出:
コーナー検出

2. ハフ変換直線検出

展示するmatlab代码

clear;
close all;

img = imread('hough.jpg');
figure(1),
subplot(1,2,1);
imshow(img);  
title('原始图像'); 
img=rgb2gray(img);  % 灰度图像
subplot(1,2,2);
imshow(img);  
title('灰度图像'); 
thresh=[0.01,0.10];  %敏感度阈值
sigma=3;%定义高斯参数  

f = edge(double(img),'canny',thresh,sigma);  %边缘检测
figure(2),
imshow(f);  
title('canny 边缘检测');  
 
% 检测函数;
[H, theta, rho]= hough(f,'Theta', 20:0.1:75);  %0-1
% H->累计数组 , thetaH:对应的θ,实际上H的大小就是Rho×Theta
% Rho:H对应的ρ

peak=houghpeaks(H,5);  %峰值提取
hold on  %保留当前的图和特定的坐标轴属性,以便后续的绘图命令添加到现有的图表。
%得到线段信息
lines=houghlines(f,theta,rho,peak);  

figure(3);
imshow(f,[]);
title('霍夫变换检测结果');
hold on  ;

for k=1:length(lines)  
    xy=[lines(k).point1;lines(k).point2];  
    plot(xy(:,1),xy(:,2),'LineWidth',4,'Color',[1,0,0]);  
end  

実行結果表示:

元の画像とグレースケール画像
鋭いエッジ検出
ハフ変換検出

要約:

SUSAN (Smallest Univalue Segment Assimiling Nucleus) オペレーターは画像処理で一般的に使用されるコーナー検出アルゴリズムであり、ハフ変換は直線検出に使用される技術です。以下にそれぞれの特徴を紹介します。

コーナー検出用の SUSAN オペレーターの機能:

  1. 画像の勾配情報に依存しない: SUSAN オペレーターは、ピクセル周囲のグレー値の統計情報に基づいており、画像の勾配を計算する必要はありません。これにより、ノイズに対してより堅牢になります。
  2. これは、照明の変化に対して一定の堅牢性を備えています。SUSAN オペレーターは、ピクセルの周囲の近傍のピクセルと中心ピクセルのグレースケールの差を比較することによって、コーナー ポイントを決定します。したがって、画像内に特定の照明変化がある場合でも、効果的なコーナー検出を実行できます。
  3. スケール不変性: SUSAN オペレーターは、さまざまなスケールの画像上のコーナー ポイントを検出できます。調整可能な半径パラメータを使用して近傍のサイズを制御し、さまざまなスケールでのコーナー検出を実現します。

直線検出のためのハフ変換の特徴:

  1. ロバスト性: ハフ変換は、画像ノイズや局所的な干渉に対して一定のロバスト性を持っています。ハフ変換はパラメータ空間の累積により直線を検出するため、画像内の孤立点や干渉線分を無視することができます。
  2. 複数の直線を検出する場合: ハフ変換では、1 本の直線だけでなく、画像内に存在する複数の直線を検出できます。パラメータ空間での累積プロセスにより、さまざまな直線パラメータの組み合わせを検出できます。
  3. 局所的な形状の変化に対する感度: ハフ変換は、直線を検出する際の局所的な形状の変化に対する感度が高くなります。したがって、直線がある程度途切れたり、不連続になったりしても、ハフ変換により対応する直線部分を検出することができる。

SUSAN 演算子とハフ変換はどちらも画像処理の分野では古典的な手法であり、それぞれに独自の特徴と適用範囲があることに注意してください。実際のアプリケーションでは、特定のシナリオやニーズに応じて、コーナー検出と直線検出に適切なアルゴリズムを選択できます。

おすすめ

転載: blog.csdn.net/weixin_52374973/article/details/130625933