1

저는 형태학적인 작업을 부드럽게하려고합니다. 나는 이미 이미지에 을 4 * 4 침식과 4 * 4 확장 (나는 침식과 팽창에 최선을 다하기 위해 최선을 다했습니다)을했습니다. 그런 다음 노이즈를 필터링하기 위해 가장 큰 얼룩을 감지했습니다. 다음 단계는 이미지 윤곽 내부의 틈새를 채울 수 있도록 이미지 2의 형태 학적 작동을 부드럽게하는 것입니다. aforge를 사용하여 간격을 채우기 위해 다음 코드 세그먼트를 사용했습니다. 그러나이 메서드는 아무 것도 반환하지 않습니다..AForge.net의 채우기 구멍이 작동하지 않습니다.

public Bitmap fillGap(Bitmap image) 
     { 

      FillHoles filter = new FillHoles(); 
      filter.MaxHoleHeight = 5; 
      filter.MaxHoleWidth = 5; 
      filter.CoupledSizeFiltering = false; 
      filter.Apply(image); 
      return image; 
     } 

수정하기위한 다음 단계는 무엇입니까?

Skin Detected Image Morphological Image

답변

1

API documentation에 따르면, Apply 방법은 소스 이미지 그대로 남긴다. 어느와 방법의 마지막 두 줄 대체 :

return filter.Apply(image); 

또는 대신 ApplyApplyInPlace 방법 사용 : BTW

filter.ApplyInPlace(image); 
return image; 

을이다 MaxHoleHeight과 충분히 큰 값으로 MaxHoleWidth 세트?

+0

여전히 기능이 작동하지 않습니다. foramt (8bbp) 이미지가 누락 되었습니까? – TNC

+0

'FillHoles' 클래스 문서에 따르면 이미지는 8bpp 바이너리이어야합니다. 필자는 정말로이 라이브러리에 대한 경험이 너무 많지 않아서 안전하다고 생각하지 않을 것입니다. 아마도 소스 이미지의 복제본을 만들고 복제 된 이미지에'FillHoles' 필터를 적용 할 수 있을까요? 'var clonedImg = Image.Clone (image, PixelFormat.Format8bppIndexed);'. 나는 이것이 이미지를'FillHoles' 필터에 민감하게 만들기에 충분하다고 확신하지는 않지만, 적어도 시도해 볼만한 가치가 있습니까? –

+0

아마도'FillHoles' 필터보다 먼저'임계 값'필터를 적용해야 할 것입니다. [this] (http://stackoverflow.com/q/11005067/650012) SO 질문을보십시오. –