2016-08-15 1 views
4

에 대상의 센터를 감지 :사람이 MATLBAB을 사용하여 다음과 같은 이미지의 목표의 각각의 중심을 검출의 대체 수단을 제안 할 수 MATLAB

Targets

내 현재의 접근 방식은 regionprops와 중심 감지를 사용합니다.

clc, clear all, close all 
format long 
beep off 
rng('default') 

I=imread('WP_20160811_13_38_26_Pro.jpg'); 


BW=im2bw(I); 
BW=imcomplement(BW); 

s = regionprops(BW, 'area','Centroid'); 

centroids = cat(1, s.Centroid); 
imshow(BW) 
hold on 
plot(centroids(:,1), centroids(:,2), 'b*') 
hold off 

이 접근 방식 등 잡음, 관점 왜곡에 민감 보인다 중심을 검출하는 더 정확한 방법이 있나요 두 분기 원의 각각의 교차점을 찾을 수있는 방법이 있습니까.

내가 생각하고있는 또 다른 유형의 대상은 다음과 같습니다. enter image description here 십자선의 중심을 감지하는 방법을 제안 할 사람이 있습니까? 감사합니다

내 수정이 이미지에 대한 효율적인 100 % 작동
+0

이 접근법이 노이즈에 민감하다고 말하면 처리하기 전에 이미지를 노이즈 제거해보십시오. –

+1

저는 Matlab을 사용하지 않았지만이 함수 [HERE] (http://se.mathworks.com/help/images/ref/imfindcircles.html)에서 수행 된 HoughCircles 메서드를 사용하여 가능할 수 있다고 생각합니다. 이미지의 서클은 불완전하지만 올바르게 입력 된 이미지와 오른쪽 매개 변수를 사용하면 서클 좌표가 표시 될 수 있습니다. –

+0

서클이 완전하지 않은 경우에도 Hough 변환을 시도해 볼 가치가 있다는 것에 동의합니다. 단점은 이것을 유전 적 형태로 일반화 할 수는 없지만 여기서는 효과가있을 수 있다는 것입니다. – eigenchris

답변

1

:

I = imadjust(imcomplement(rgb2gray(imread('WP_20160811_13_38_26_Pro.jpg')))); 
filtered_BW = bwareaopen(im2bw(I), 500, 4); 
% 500 is the area of ignored objects 

final_BW = imdilate(filtered_BW, strel('disk', 5)); 

s = regionprops(final_BW, 'area','Centroid'); 
centroids = cat(1, s([s.Area] < 10000).Centroid); 
% the condition leaves out the big areas on both sides 

figure; imshow(final_BW) 
hold on 
plot(centroids(:,1), centroids(:,2), 'b*') 
hold off 

enter image description here

기능 내가 추가 오전 :

  • rgb2gray 값의 하나 개의 차원을 가질 수를!
  • imadjust 자동
  • bwareaopen이 작은 섬 없애, 휘도와 콘트라스트를 최적화
  • imdilate
  • strel는 영역 성장 영역 끊어진 연결.
관련 문제