When will you grow up?

13.형태학 연산으로 영상변환(morphology ->erosion(침식) dilation(팽창)) 본문

02. Study/Computer Vision(openframworks&opencv)

13.형태학 연산으로 영상변환(morphology ->erosion(침식) dilation(팽창))

미카이 2016. 10. 22. 15:13

Morphology ->형태학이라는 뜻으로 어떠한 영상이 존재할경우 영상을 구성하는 요소나 변화 등을 분야라고 생각하시면 됨니다.


보통 잡음 제거하는 용도로 많이 사용됨니다. 물론 100프로 복원되지는 않습니다.


모폴로지 에는 erosion(침식) dilation(팽창) 이 가장 기본적인 형태학 연산자 입니다.


수학적 형태학의 기본 성분은 구조요소(structuring element)입니다.

여기서 구조요소 기점(anchor point)라고도 불리는 화소의 구성으로 정의할수 있습니다.



openCV 에서 제공되는 erode,dilate를 확인해보자.


---------------------------------------------------------------------------------------------------

erode(img,dst,kernel);//원본이미지,결과이미지,커널사이즈

이렇게 사용할수 있다.


erode(img,dst,Mat());// 사용하게 되면 커널or구조요소 미지정된것으로 간주하고 기본                                 // default 3*3커널을 사용하게된다

Mat eroded;

Mat kernel(7, 7, CV_8U, Scalar(255));//7*7커널을 만들어서 사용(홀수크기,0이 아닌 원소)

erode(image, eroded, kernel);


     


                3*3 기본 커널 적용                                    7*7 커널 적용

         erode(침식)은 현재 화소를 정의된 화소 집합에서 찾은 최소 화소 값으로 바꾼다.


---------------------------------------------------------------------------------------------------

dilate또한 erode랑 똑같이 메소드를 사용할수있다.


dilate(image, dilate_2,Mat());//원본이미지,결과이미지,커널사이즈


Mat kernel(7, 7, CV_8U, Scalar(255));

dilate(image, dilate_2, kernel);


                     

     


              3*3 기본 커널 적용                                    7*7 커널 적용


dilate(팽창)은 상호 보완적인 연산자로서 현재 화소를 정의된 화소 집합에서 찾은 최대 화소 값으로 바꾼다.

---------------------------------------------------------------------------------------------------


마지막으로 침식후 팽창을 한번 해보겠습니다

code는 아래와 같습니다

  Mat image = imread("223.JPG");

imshow("원본", image);

Mat eroded;

Mat kernel(3, 3, CV_8U, Scalar(255));

erode(image, eroded,kernel);

imshow("eroded", eroded);

Mat dilate_2;

dilate(eroded, dilate_2, kernel);

imshow("dilate", dilate_2);



   

3*3 기본 커널 적용                                    7*7 커널 적용

-------------------------------------------------------------------------------------------------

연산횟수, 크기, 모양을 정확히 정할수 있으나 그에따라 연산량도 크게 증가한다는게 단점입니다.




참고자료

블로그 :http://m.blog.naver.com/pckbj123/100203072320  

책 : OpenCV를 활용한 컴퓨터 비전 프로그래밍

Comments