이진 영상의 모폴로지는 기본적인 침식과 팽창 연산만 알고 있어도 충분하다그러나 그레이스케일 또는 컬러 영상의 경우유용한 모폴로지 연산들이 더 존재한다모폴로지 연산들은 모두 하나의 함수 Cv.MorphologyEx()를 이용한다.

 

public static void MorphologyEx(CvArr src, CvArr dst, CvArr temp, IplConvKernel element, MorphologyOperation operation, int iterations);

 

Cv.MorphologyEx() 함수는 두개의 새로운 매개변수를  받는다하나는 temp 배열이고다른 하나는 operation이다. Temp 배열이 선택적으로 사용된다, temp 배열이 사용되는 경우 배열은 입력 영상과동일한 크기여야 한다.

 

Operation 인자에 지정할  있는 

Operation

모폴로지 연산

Temp 영상의 필요 유무

MorphologyOperation.Open

열기

불필요

MorphologyOperation.Close

닫기

불필요

MorphologyOperation.Gradient

모폴로지 그래디언트

항상필요

MorphologyOperation.Tophat

탑 

바꿔치기 전용(src = dst)

MorphologyOperation.Blackhat

블랙 

바꿔치기 전용(src = dst)


열기와 닫기 연산

열기와 닫기 연산은 침식과 팽창 연산을 조합하여 사용함으로써 이루어진다열기 연산의 경우침식 연산을 수행한 후 팽창 연산을 수행한다열기 연산은 종종 이진 영상에서 독립된 영역들의 개수를 세기 위해서 사용된다예를 들어현미경으로 관찰한 세포 영상을 임계값을 이용하여 이진화한 후열기 연산을 수행하여 가까이 붙어 있는 세포들을 서로 떨어뜨리려 놓고 나서 세포의 수를 세곤 한다닫기 연산은 팽창을 먼저 하고 침식 연산을 수행한다닫기 연산은 연결된 구성 요소 알고리즘 등에서 잡음에 의한 원치 않은 분할을 최소한으로 줄이고자 사용한다연결된 구성 요소 레이블링을 수행하기 위해 보통 침식 또는 닫기 연산을 수행하여 잡음을 먼저 제거하고열기 연산을 수행하여 다시 가까이 인접한 큰 영역들을 합쳐준다열기 또는 닫기 연산의 결과는 침식 또는 팽창 연산의 결과와 유사하지만열기 및 닫기 연산이 연결된 영역을 보다 정확하게 보존해준다.

 

IplImage tempimage = src.Clone();

 

            IplConvKernel element = Cv.CreateStructuringElementEx(3,322ElementShape.Rect, null);

 

            Cv.MorphologyEx(src, dst, tempimage, element, MorphologyOperation.Open, 3);



모폴로지 열기 연산의 결과작은 크기의 밝은 영역은 사라지고남아 있는 밝은 역역의 크기는 유지된채 고립되어 있다.


모폴로지 닫기 연산의 결과밝은 영역들이 서로 합쳐졌지만 기본 크기는 유지하고 있다.

 

Iterations 2를 전달하여 닫기 연산을 두 번 수행하는 것은 팽창-침식-팽창-침식 연산을 수행하는 것 같은 효과를 나타낸다그러나 이러한 연산은 그다지 유용하지 않다보통의 경우팽창-팽창-침식-침식 같은 연산을 원할 것이다팽창-팽창-침식-침식과 같은 방식으로 모폴로지 연산을 수행해야 팽창-침식을 한 번 수행하는 것보다 더 큰 잡을을 제거하는 효과가 있다.

 

모폴로지 그래디언트

이 연산을 이진 영상에 적용하면 영역의 외곽선만 남기는 효과가 있다.

Gradient(src) = dilate(src) - erdoe(src)



모폴로지 그래디언트 연산의 결과주변부 엣지가 밝게 표현된다.

 

그래이스케일 영상에 대한 모폴로지 그래디언트 연산 결과는 영상에서 밝기값 변화량의 정도를 알려준다모폴로지 그래디언트는 밝은 영역 주위를 고립시켜서 이를 하나의 객체로써 다룰 수 있도록 해준다영역의 완전한 외곽선은 확정된 영역으로부터 수축된 영역을 빼는 차연산을 통해 쉽게 구할 수 있다이는 객체의 그래디언트를 계산 하는 것과는 다르다.(그래디언트 관한 소벨샤르 연산)

 

-햇 연산과 블랙-햇 연산

이들 연산은 주변보다 밝거나 어두운 영역을 고립시키는 효과가 있기 때문에 특정 객체 내부에서 밝기 변화가 두드러진 부분을 찾아내기 위해 사용된다예를 들어생체조직 또는 세포를 촬영한 현미경 영상을 다룰 때 사용되기도 한다.

TopHat(src) = src - open(src)

BlackHat(src) = close(src) - src

 

-햇 연산은 입력 영상에서 열기 연산이 수행된 영상을 빼는 연산이다열기 연산은 영상에서 밝기값이 크게 튀는 작은 덩어리를 제거하는 효과가 있다그러므로 src에서open(src)를 빼게 되면 결과적으로 원본 src영상에서 주변보다 밝았던 부분만 남아서 강조되어 보인다이러한 효과는 커널의 크기에 의존적이다이와 반대로 블랙-햇 연산은 원본 영상에서 주변보다 어두운 영역만 강조한다.


모폴로지 탑-햇 연산의 결과주변보다 밝은 영역들이 강조되었다.


모폴로지 블랙-햇 연산 결과주변보다 어두운 영역들이 강조되었다.

'Programing > OpenCV' 카테고리의 다른 글

제스쳐 인식  (0) 2016.11.30
플러드필  (0) 2016.11.30
영상 모폴로지 자체 커널 만들기  (0) 2016.11.30
영상 모폴로지  (0) 2016.11.30
스무딩(블러링)  (0) 2016.11.30

+ Recent posts