matlab画像検出処理——図形検出
1807 ワード
このブログは自分がよく忘れているので、メモを取っているだけです.
一般的な操作:
一般的な操作:
1、二値化
clc
A=imread('a.jpg'); %
thresh = graythresh(A); %
I2 = im2bw(A,thresh); %
figure(1)
imshow(A) %
figure(2)
imshow(I2) %
threshは二値化の閾値であり、0から1の間でサイズを自分で決定することができる.
2、エッジ検出
エッジ検出によく使われる5種類
1、Robert演算子エッジ検出
BW1=edge(I,'Roberts',0.16);
imshow(BW1);
2、Sobel演算子エッジ検出
BW2=edge(I,'Sobel',0.16);
imshow(BW2);
3、Prewitt演算子エッジ検出
BW3=edge(I,'Prewitt',0.06);
imshow(BW3);
4、LOG演算子エッジ検出
BW4=edge(I,'LOG',0.012);
imshow(BW4);
5、Canny演算子エッジ検出
BW5=edge(I,'Canny',0.35);
imshow(BW5);
単純常用円検出:imfindcircles
例;[c,r]=imfindcircles(image,[circles 1,circles 2])、imageは検出画像マトリクス、circles 1,circles 2はそれぞれ円検出の半径であり、すなわち検出可能な円半径範囲を決定する.注意:円検出半径範囲が大きいとプログラム速度が遅くなります.
円を検出した後、画像に対応する円と円心を直接描くことができます:viscircles(c,r,'EdgeColor','b');ここでcは円心座標,rは円半径,‘EdgeColor’,‘b’はそれぞれ円を描くパラメータである.[c,r]=imfindcircles(image,[circles1,circles2]);
figure
imshow(image)
viscircles(c, r,'EdgeColor','b');
連通ドメイン検出共通関数
bwlabel ;regionprops [B,L]=bwlabel(B0);
img_reg = regionprops(B, 'all');
img_regbは閉鎖領域の構造体で、中で最もよく使われているのはCentroidです:閉鎖領域の質量心;BoundingBox:長方形の境界;PixelList連通領域座標
連通ドメイン境界検出
[B,L] = bwboundaries(image)
1.Bは、P x 1の配列である、ここで、Pは、連通体の個数を表す.B内の各行はQ x 2の行列である、Q内の各行は連通体の境界画素の位置座標(第1列は縦座標Y、第2列は横座標X)を表し、Qは境界画素の個数である.
2.Lはタグマトリクスである.
clc
A=imread('a.jpg'); %
thresh = graythresh(A); %
I2 = im2bw(A,thresh); %
figure(1)
imshow(A) %
figure(2)
imshow(I2) %
BW1=edge(I,'Roberts',0.16);
imshow(BW1);
BW2=edge(I,'Sobel',0.16);
imshow(BW2);
BW3=edge(I,'Prewitt',0.06);
imshow(BW3);
BW4=edge(I,'LOG',0.012);
imshow(BW4);
BW5=edge(I,'Canny',0.35);
imshow(BW5);
例;[c,r]=imfindcircles(image,[circles 1,circles 2])、imageは検出画像マトリクス、circles 1,circles 2はそれぞれ円検出の半径であり、すなわち検出可能な円半径範囲を決定する.注意:円検出半径範囲が大きいとプログラム速度が遅くなります.
円を検出した後、画像に対応する円と円心を直接描くことができます:viscircles(c,r,'EdgeColor','b');ここでcは円心座標,rは円半径,‘EdgeColor’,‘b’はそれぞれ円を描くパラメータである.
[c,r]=imfindcircles(image,[circles1,circles2]);
figure
imshow(image)
viscircles(c, r,'EdgeColor','b');
連通ドメイン検出共通関数
bwlabel ;regionprops [B,L]=bwlabel(B0);
img_reg = regionprops(B, 'all');
img_regbは閉鎖領域の構造体で、中で最もよく使われているのはCentroidです:閉鎖領域の質量心;BoundingBox:長方形の境界;PixelList連通領域座標
連通ドメイン境界検出
[B,L] = bwboundaries(image)
1.Bは、P x 1の配列である、ここで、Pは、連通体の個数を表す.B内の各行はQ x 2の行列である、Q内の各行は連通体の境界画素の位置座標(第1列は縦座標Y、第2列は横座標X)を表し、Qは境界画素の個数である.
2.Lはタグマトリクスである.
[B,L]=bwlabel(B0);
img_reg = regionprops(B, 'all');