2011-04-13 2 views
2

OpenCV 라이브러리의 cvThresholding() 루틴을 사용하여 Otsu의 임계 값 계산 방법을 사용하여 바이너리 화를 수행합니다. Otsu가 전체 이미지에 대해 단일 임계 값을 계산하기 때문에 이해할 수없는 경우가 있습니다. 결과를 향상시키기 위해 이미지를 그리드로 분해 한 다음 그리드의 각 섹션에서 오투 바이너리를 수행하기로 결정했습니다. 결과는 이제 고무적인 것처럼 보이지만 그리드 기반 파티셔닝은 출력 바이너리 이미지를 특히 그리드 가장자리에서 불연속으로 만듭니다. 이 문제를 해결할 방법이 있습니까?현지화 된 Otsu 바이너리 화 구현

친절하게도이 방법이 나에게 가장 적합하다는 점에 유의하십시오. Opencv에서 사용할 수있는 적응 형 thresholding 옵션을 알고 있으며, 오츠 (Otsu)의 바이너리 화 방식에 비해 너무 민감하기 때문에 저에게는 효과적이지 않습니다.

응답을 기다리고 있습니다. 미리 감사드립니다.

+0

안녕하세요 @Saurabh Gandhi는 다음 문장 "cvThreshold (Img1, Img1, 0, 255, CV_THRESH_BINARY | CV_THRESH_OTSU); Img1은 32F 1 채널 이미지이지만 계속해서 예외를 던지고 있습니다. 당신이 나를 도울 수 . pLzzzz – krishna

답변

3

Simplest는 아마도 그리드의 중심 사이의 임계 값을 보간하는 것입니다. 임계 값 이미지는 불연속 적이지만 (크기가 아닌 그래디언트에서) 최종 결과에 나타나기가 쉽지 않습니다.

3

그리드 대신 이동 창을 사용하면 어떻습니까? 예를 들어, 각 픽셀에 대해이 픽셀을 중심으로 5x5 또는 7x7 패치에 대해 얻은 임계 값을 기준으로 이진화합니다 (가장자리에 적절한 줄 바꿈이 있음).

움직이는 창은 이미지에서 임계 값을 점차적으로 연속적으로 변경합니다.

+0

이미지의 각 픽셀에 대해이 작업을 수행하는 데 계산 상 많은 비용이 발생합니다. 즉, 나 자신을 더 잘 생각할 수는 없다. – misha