[Computer Vision Fundamentals] 最大カーネル クラスタリング。Canny およびその他のエッジ フィルタリング手法を使用して画像のエッジを抽出し、画像のハリス コーナー特徴を抽出し、ボロノイおよびドロネー グリッド分割を実行します。最大ボロノイ分割カーネル クラスタリングの詳細を示します。カーネルクラスタリングを最大化するための計算アルゴリズム

 問題の説明は次のとおりです。

  1. Sobel、Prewitt、および Canny のエッジ フィルタリング手法を使用して、色からエッジ特徴を抽出し、対応するエッジ イメージをそれぞれ表示します。
  2. 要件 1 でカラー画像上のハリスのコーナー特徴を取得し、生成されたコーナー特徴に基づいて要件 1 で生成されたキャニー エッジ画像に対してドロネー格子分割とボロノイ格子分割を実行し、2 つの分割を別々に表示する必要があります。エッジ検出結果画像。
  3. 要件 2 のボロノイ グリッド分割の最大コア クラスタリングを達成するコードを記述する: ボロノイ グリッド分割の最大コア クラスタリングの結果を選択して表示する; または、ボロノイ グリッド分割画像で特定の値を指定する 各ボロノイ領域がコアとなり、そして、コアの最大核クラスタリング結果が生成されて表示されます;ここで、最大コアクラスタリングを達成する方法は、各ボロノイグリッドを走査し、最大のボロノイグリッドをカーネルとして選択し、最大カーネルクラスタを生成することです。

実装したプログラムコードは以下の通りです。 

clear
clc
%% 1、三种滤波方法提取边缘特征
I=imread('peppers.png');
Igy=rgb2gray(I);
Isob=edge(Igy,'Sobel');
Iprew=edge(Igy,'Prewitt');
Icany=edge(Igy,'Canny');
figure('Name','边缘特征提取','NumberTitle','off')
subplot(221),imshow(I),title('原彩色图像')
subplot(222),imshow(~Isob),title('Sobel滤波器提取边缘')
subplot(223),imshow(~Iprew),title('Prewitt滤波器提取边缘')
subplot(224),imshow(~Icany),title('Canny滤波器提取边缘')
%% 2、德劳内剖分与沃罗诺伊剖分
corns=detectHarrisFeatures(Igy);
corns2=corns.Location;
corns2=double(corns2);
TC=delaunay(corns2(:,1),corns2(:,2));
figure('Name','德劳内与沃罗诺伊','NumberTitle','off')
subplot(121),imshow(~Icany),title('德劳内网格划分'),hold on
triplot(TC,corns2(:,1),corns2(:,2),'b-')
subplot(122),imshow(~Icany),title('沃罗诺伊网格划分'),hold on
voronoi(corns2(:,1),corns2(:,2),'r'),hold on
 
%% 3、最大核聚类
[v,p]=voronoin(corns2);#得到voronoi网格顶点的坐标矩阵和voronoi网格顶点的坐标矩阵中的行索引的单元数组
for i=1:length(p)
chdu(i)=length(p{i,1});
end
chadu=chdu';
[z,wz]=max(chadu);
figure('Name','最大核聚类','NumberTitle','off')
imshow(~Icany),hold on
suoyin=p{wz,1};
julei=v(suoyin,:);
jleix=[julei(:,1)' julei(1,1)];
jleiy=[julei(:,2)' julei(1,2)];
m=1;
for i=1:length(p)#挑选与最大核相连的沃罗诺伊网格
    A=p{i,1};
    for k=1:length(suoyin)
        B=find(A==suoyin(k));
        if isempty(B)==0
            jlyuan{m,1}=A;
            m=m+1;
        end
    end
end
for i=1:length(jlyuan)
    ljieyb=v(jlyuan{i,1},:);
    patch(ljieyb(:,1),ljieyb(:,2),'y'),hold on
end
plot(jleix,jleiy,'Color','c','LineWidth',3)
patch(jleix,jleiy,'m'),hold on
voronoi(corns2(:,1),corns2(:,2),'r'),hold on
plot(corns2(wz,1),corns2(wz,2),'b'),hold on

プログラムアルゴリズムの原理は次のとおりです。

  1. まず関数 rgb2gray を使用してカラー画像をグレースケール画像に変換し、次に関数edgeを使用してグレー画像のエッジ特徴を抽出します。まず、関数edgeのパラメータメソッドを「Sobel」に設定し、得られた取得したエッジ画像をそれぞれ「Prewitt」と「Canny」に設定し、Prewitt フィルタ法と Canny フィルタ法で画像のエッジ特徴を抽出したエッジ画像を取得します。最後に関数 imshow を使用して、取得した各エッジ画像のネガを表示します。同様に、ネガ画像の方が鮮明に見えます。実験結果の違いを実験概要で分析していきます。
  2. グレースケール イメージに対して関数 detectHarrisFeature を使用して、ステップ1 でハリス法を使用して計算されたカラー イメージのイメージ コーナーを取得します。次に、関数 delaunay を使用して、イメージのハリス コーナーの 2D ドローネ三角形分割を作成します。関数 imshow は、ステップ 1 のキャニ​​ー エッジ イメージのネガ イメージを表示し、コマンドhold on を使用して維持し、関数 Triplot を使用してドロネー三角形分割を表示し、エッジ イメージ上のドロネー メッシュ分割を取得します。次に、関数 voronoi を使用してHarrisを変換します。コーナー ポイントのボロノイ メッシュがキャニー エッジ イメージ上にプロットされ、エッジ イメージ上のボロノイ メッシュ分割が取得されます。結果の分析については実験概要で説明します。
  3. まず、関数 voronin (詳細については、MATLAB コマンド ウィンドウで doc+voronoin と入力してください。関数 voronin は voronoi とは異なります) を使用して、画像 Harris の角点のボロノイ グリッド頂点の座標行列を取得し、保存します。ボロノイ内のすべてのボロノイセルすべてのボロノイ頂点 グリッド頂点の座標行列の行インデックスのセル配列、セルはボロノイグリッドであり、セルをコアとしたクラスターのサイズはその数によって決定できますボロノイ頂点の数はエッジの数にも対応するため、セルのボロノイ頂点インデックスの数、つまりセル配列に格納されている行インデックス配列の長さを使用する必要があります。特定のセルをコアサイズとしてクラスタリングを決定し、最大のコア クラスターのコアを見つけるため、ユニット配列を直接走査して各行インデックス配列の長さを計算し、関数 max を使用してユニット配列内の最大長の行インデックス配列の位置。位置はセル配列内のこの行インデックス配列を読み取ります。この行インデックス配列は、最大のカーネル クラスタリングのカーネルのすべてのボロノイ。次に、その行インデックス配列を使用して、ボロノイグリッド頂点を保存する座標行列を読み取ります。最大の核クラスタリングの核のすべてのボロノイ。これまでのところ、最大の核クラスタリングの核に対応するセルは画像のボロノイ グリッド分割で見つかった後、上記と同様の方法を使用して、セルをロックする頂点を使用して、最大の核クラスター内の核の外側のセルを見つけます。ボロノイ頂点と核ボロノイを持つ頂点は同じです。つまり、最大の核クラスタリングのすべてのセルのボロノイ頂点の行インデックス配列内に、コアのボロノイ頂点の行インデックス配列内の要素が存在するため、次のセルを横断します。ボロノイ頂点配列の行インデックス配列を保存し最大の核クラスタリングのコアを含むのすべての行インデックス配列要素の行インデックス配列をボロノイボロノイ画像内のすべてのボロノイ頂点の座標なので、最大核クラスタリング全体がロックされ、最後に関数 imshow を使用してキャニー エッジ イメージを表示し、保持します関数 patch は、最大クラスタリング内のすべてのセルのボロノイ頂点を取得するために使用されます。座標は、最大核クラスタリング領域の色を変更して最大核クラスタリングを表示し、パッチ関数を使用してコアのボロノイ調整して、核に対応するセルの色を変更して、最大の核クラスタリング コアを表示します。

プログラムを実行した結果は次のようになります。

1. エッジ特徴を抽出する 3 つのフィルタリング方法

2. ドロネー分割とボロノイ分割

 3. ボロノイ最大カーネル クラスタリング

 最大カーネル クラスタリング アルゴリズムはより複雑であり、アルゴリズム原理の説明はより詳細です。同時実行プログラムを注意深く読み、MATLAB のヘルプ ウィンドウを使用して、アルゴリズム原理の一部の属性の説明を見つけるか、変数を使用してください。これらの変数のプロパティを見てください、アルゴリズムはすべてのイメージに適用され、任意の 1 つのイメージの最大カーネル クラスタリングが計算され、ボロノイ パーティションに表示されます。(Matlab ヘルプ ウィンドウでは、doc+関数名が使用されます。より詳細な使用方法の紹介を入手できます)。他にご質問がある場合は、メッセージを残すか、ブロガーにプライベート メッセージを送信してください。

 ブロガーに「いいね!」を与えることを忘れないでください。

ブロガーをフォローして、コンピューター ビジョンと画像処理について詳しく学びましょう。

オリジナルコンテンツを許可なく複製することはできません。

最大カーネル クラスタリング アルゴリズムはブロガーの独自の方法に属します。 

おすすめ

転載: blog.csdn.net/qq_59049513/article/details/122557631