2017-04-17 13 views
1

以下に示すように、私はサークルを検出した:検出された円を四角で切り抜く方法は?

として後、私は、私は同様の画像が残っていますように、どのように私はそれをトリミングしない、検出された符号であるものの速度制限を検出したいです以下?

プログラムがそれを完了すると、中心は、端末内の半径で、どこで、それは私を示しています。

centers = 

    248.4873 170.4811 


radii = 

    24.5024 

私はimcropを使用する方法を知っているが、どのように私は、検出された1つの以上の円があるかもしれないとして、彼らに自分を書くのではなく、返された値を使用していますか?

コード:

I = imread('p1.tif'); 
subplot(3,3,1); imshow(I); title('Original Image'); 
%sharpen edges 
B = imsharpen(I); 
subplot(3,3,2); imshow(B); title('sharpened edges'); 

%find circles 
Img = im2bw(B(:,:,3)); 
minRad = 20; 
maxRad = 90; 
[centers, radii] = imfindcircles(Img, [minRad maxRad], ... 
            'ObjectPolarity','bright','sensitivity',0.87) 
imagesc(Img); 
viscircles(centers, radii,'Color','green'); 

答えて

2

使用すると、1つの中心と1つの半径を持っていると仮定。これが必要です

rect = [centers(1)-radii,centers(2)-radii,2*radii,2*radii] 
I2 = imcrop(I,rect) 

複数のサークルの場合、ループ内で返される各サークルに対してこの処理を実行できます。

+0

ありがとうございます。完璧に動作します! – Powisss

+0

@Powisss必要な画像に対して 'I2 = imcrop'を使って対話的に円をトリミングすることもできます。 – Tes3awy

関連する問題