아래 그림과 같은 이미지가 있습니다.
원의 반지름 (또는 직경)을 찾으려고합니다. 나는 원형 Hough 변환 (matlab 's 사용 imfindcircles(bw,[rmin rmax],'ObjectPolarity','bright')
)을 사용하고 원이나 타원에 맞추려고 노력했습니다 (노이즈가 적은 데이터에 아주 잘 작동하는 집에서 만든 함수입니다 (아래 참조)).
또한 더 선명한 원을 얻기 위해 이미지 처리를 시도했습니다. 예를 들어 아래를 참조하십시오.
se = strel('disk', 2);
bw = imdilate(bw, se);
bw = bwareaopen(bw,100000);
bw = edge(bw);
그러나 처리 된 이미지를 두 기술 (하프 및 원형 / 타원 피팅)에 공급하면 어느 것도 원을 적절한 방식으로 감지하지 못합니다.
다음은 내가 쓴 서클 파인더의 코드 스 니펫입니다 (matlab) [row col] = find (bw); 등고선 = bwtraceboundary (bw, row (1), col (1)], 'N', 연결성, num_points);
x = contour(:,2);
y = contour(:,1);
% solve for parameters a, b, and c in the least-squares sense by
% using the backslash operator
abc = [x y ones(length(x),1)] \ -(x.^2+y.^2);
a = abc(1); b = abc(2); c = abc(3);
% calculate the location of the center and the radius
xc = -a/2;
yc = -b/2;
radius = sqrt((xc^2+yc^2)-c);
대체 접근법이 인정 될 것입니다 ...