2014-03-07 6 views
1

이 이미지에서 원의 분할로 인해 Matlab에 몇 가지 문제가 있습니다. 콘트라스트의 차이는 정말 작고 이미지 자체는 정말로 시끄 럽습니다. 나는 이미지에서 약간의 프로세싱을하고 대비의 차이를 증가 시켰지 만 여전히 어떻게 해야할지 모릅니다.원의 대비가 낮습니다.

나는 this paper을 찾았지만 DCT를 사용하여 백그라운드 재구성을 진행하는 방법을 모른다. 나는 이전의 단계를했다. 조정 전의

이미지 :

Image after adjustment

각 스포크 3 원으로 구성하고있다 : 조정합니다 (innercircle이 imfindcircles를 사용하여 전체 그림에서 절단) 후

Image before adjustment

이미지 10 스포크 그래서 총 30 서클 있습니다. 내가 지금까지 시도했습니다 무엇


:

clc 
clear 
im = imread('f8.jpg'); 
im = mat2gray(im); 

im = 1 - im; 
s = size(im); 

%contrast enhancement method suggested in paper 
for x = 1:s(1); 
    for y=1:s(2); 
     a = max(im(x, :))/mean(im(x, :)); 
     a; 
     b = max(im(:, y))/mean(im(:, y)); 
     b; 
     ab = (a+b)/2; 
     im(x, y) = im(x, y) * ab; 
     im(x, y); 
    end 
end 

imshow(im); 

%bluring 

h = fspecial('average', [2,2]); 
im= filter2(h, im); 

%find circles 
[c, r] = imfindcircles(im, [35 50], 'Sensitivity', 0.92, 'Edge', 0.01); 

% figure(1) 
% imshow(im) 
% hold on 
% viscircles(c, r, 'EdgeColor', 'b'); 
% hold off 

% making mask that cuts out the inenr circles 

mask = bsxfun(@plus, ((1:256) - c(1,1)).^2, (transpose(1:256) - c(1,2)).^2) < r(1)^2; 
mask = im2double(mask); 
mask_al 

for x=1:256 
    for y=1:256 
     if mask(x, y) == 1; 
      mask(x, y) = im(x, y); 
     end 
    end 
end 

을 요약하면 :

나는 이미지에 볼 수 있습니다 얼마나 많은 원 계산해야합니다.

+0

내 코드는 여기에 있습니다. -http : //paste.org/71029 – jasheq

답변

0

사용 가능한 일부 사용자 씨앗 입력이있는 경우 (당신은 시드 허프 원을 사용할 수도 사용할 수없는 경우) 활성 윤곽 고려하는 것이 좋습니다 :

카스, 마이클, 앤드류 윗킨, 그리고 드미트리 테조 풀 로스를 . "Snakes : Active contour models." 국제 컴퓨터 저널 1.4 (1988) : 321-331.

+0

나는 Hough Circles를 시도했는데, 실제로 이것은 내면을 얻는 방법입니다. 작은 것들이 제대로 작동하지 않습니다. 나는 활발한 윤곽선을 확실히 볼 것이다. 회신을위한 Thx! – jasheq

+0

이미 많은 뱀이 구현되어 있습니다. B- 뱀이 당신의 문제에 가장 잘 어울립니다. 먼저 해봐. –

0

Image Processing Toolbox의 imfindcircles를 사용하십시오. activecontour 함수를 사용해 볼 수도 있습니다. 자세한 정보는 help doc을 참조하십시오.