2016-10-06 109 views
1

나는 주어진 피부 이미지에서 숨구멍을 감지하고자하는 프로젝트를 진행 중이다. OpenCv에서 Java를 사용하여 다양한 방법 (HoughCircles, BlobDetection 및 Contours)을 시도했지만 진행할 수 없습니다.OpenCV에서 Blob 검출을 이용한 피부 기공 분석

HoughCircles는 나에게 모든 거짓 동그라미를 보여 주며 윤곽선도 마찬가지입니다. 현재 코드는 blob 감지 기술을 사용하여 필요한 내용을 표시하지 않습니다. 나는 거의 공 모양을 표시하는 대신 FeatureDetector.SIFT의 FeatureDetector.SIMPLEBLOB를 사용하여 동일한 코드를 시도했을 때

public void detectBlob() { 

    Mat orig = Highgui.imread("skin_pore.jpg",Highgui.IMREAD_GRAYSCALE); 

    Mat MatOut= new Mat(); 

    FeatureDetector blobDetector; 

    blobDetector = FeatureDetector.create(FeatureDetector.SIFT); 

    MatOfKeyPoint keypoints1 = new MatOfKeyPoint(); 

    blobDetector.detect(orig,keypoints1); 

    org.opencv.core.Scalar cores = new org.opencv.core.Scalar(0,0,255); 

    org.opencv.features2d.Features2d.drawKeypoints(orig,keypoints1,MatOut,cores,2); 

    Highgui.imwrite("PhotoOut.jpg", MatOut); 
} 
    public static void main(String args[]) { 
     BlobDetection bd = new BlobDetection(); 
     bd.detectBlob(); 
    } 

: 샘플 코드는 아래에 기록됩니다.

출력 및 원본 이미지가 위의 코드에 첨부됩니다. 사용하여 소스 이미지 enter image description here

출력 이미지 enter image description here

결과를 달성에 도움이 될 수 있습니다 또는 무엇이를 달성하기위한 적절한 방법이 될 수있는 다른 알고리즘이 있습니까 엄밀히?

답변

1

질문에 아무것도 묻지 않았으므로 답변을 드릴 수 없습니다. 좀 더 일반적인 조언.

명명 된 알고리즘을 사용하여이 문제를 해결하려했음을 분명히 알 수 있습니다. 이미지 처리의 기초가 부족합니다. 숫자가 어떻게 움직이는 지조차 모른다면 괜찮은 체스 플레이어 대이기려는 것과 같습니다.

초보자 용 책을 읽고 읽고 내용을 이해하도록하십시오. 그런 다음 사용하려는 알고리즘에 대해 좀 더 연구하십시오. 임의의 이미지를 가져 와서 인터넷에서 찾을 수있는 무작위 기능 감지 알고리즘에 넣고 성공할 것으로 기대할 수는 없습니다.

예를 들어 cirles의 허프 (Hough) 변환은 대략 알려진 반경의 원형 모양 윤곽을 찾는 데 적합합니다. 내부적으로 어떻게 작동하는지 알면 왜 이미지에 사용하는 것이 좋지 않은지 알 수 있습니다.

https://en.wikipedia.org/wiki/Circle_Hough_Transform

Blobdetection 및 윤곽 기반 알고리즘은 작동하지만 있습니다 만 사전 처리의 많은 후. 귀하의 이미지가 매우 "분할 친화적 인"

https://en.wikipedia.org/wiki/Image_segmentation https://en.wikipedia.org/wiki/Blob_detection

SIFT 검출기는 일반적으로 참조 이미지와 참조 키포인트를 사용하여 가르쳐해야하지 않습니다. 나는 당신의 코드에서 이것을 보지 못한다.

https://en.wikipedia.org/wiki/Scale-invariant_feature_transform

그 위키 피 디아 기사를 읽는 것은 단지 당신에게 무슨 일이 일어나고 있는지의 제 아이디어를 줄 것이다 있습니다. 당신은 훨씬 더 많이 읽어야합니다.

항상 처리 체인의 시작 부분부터 시작하십시오. 더 좋은 이미지를 얻을 수 있습니까? (더 나은 의미는 당신이 탐지하고자하는 것에 더 적합 함을 의미합니다). 이것은 10 % 카메라와 90 % 조명과 같습니다. 나는 피부 곰팡이를 감지하는 것이 엿 같은 핸드폰 사진을위한 고전적인 작업이라고 생각하지 않습니다. 그럼 왜 당신의 이미징 설정에 약간의 노력을 기울이지 않습니까?

이미지 처리의 첫 번째 규칙 : 쓰레기 = 쓰레기. 최소한 조명의 각도를 변경하거나 쉐이딩에서 모양과 같은 더 나은 접근 방식을 변경해야합니다.

검색을 위해 최적화 된 이미지는 매우 중요합니다. 이미지 처리가 훨씬 쉬워집니다.

다음 사전 처리 : 가지고있는 이미지를 어떻게 쉽게 기능을 추출 할 수있는 것으로 변환 할 수 있습니까?

기타 ...

+0

몇 가지 조사를 한 후에 이미지 처리의 몇 가지 기본 사항을 알고 있습니다. 그러나 예, 나는 이것에 초보적이며, 이번 주말까지 기본적인 작업 기능 (최소한 피부 모공을 감지하기 위해)을 보여 주어야합니다. 그래서이 채널을 통해 도움이 필요합니다. 이미지를 가져 와서 처리하려면 핸드폰 카메라를 사용해야합니다. 이 이미지는 테스트 용으로 사용되었습니다. – edeesan

+0

핸드폰 이미지에서 피부 모공을 감지하도록 요구하는 사람은 자신이하고 있거나 이야기하고있는 것이 무엇인지 잘 모르고 매우 의심 스럽습니다. 적절한 용어는 ** 구멍이라고 생각합니다. 대부분의 핸드폰 카메라가 모든 것이 아니라면 피부 모공을 제대로 해결할 수는 없지만 핸드폰을 사용해야하는 경우 첫 번째 실수는 핸드폰 이미지를 사용하지 않는 것입니다. 첫 단계로 휴대 전화로 유용한 사진을 만들어보십시오! – Piglet

+0

나는 똑같은 주장을했으며, 이제 실험실 초기에 사용 된 적절한 장치에서 이미지를 가져와야한다고 결정했다. 내 질문은 적절한 이미지가있을 때 여전히 모공을 감지하는 적절한 해결책이 없다는 것입니다. 위의 알고리즘은 그렇게하지 못하고 연구를 할 시간이 매우 적습니다. 논리를 찾는 것이 큰 도움이 될 수 있다면 도와 주실 수 있습니다. – edeesan