2017-04-17 132 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

假設你有一箇中心和一個半徑。這應該這樣做

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

對於多個圓圈,您可以爲循環中返回的每個圓圈執行此過程。

+0

謝謝。完美的作品! – Powisss

+0

@Powisss您還可以使用'I2 = imcrop'交互式裁剪所需圖像的圓。 – Tes3awy