2008/08/22

OpenCV 에서 Structuring element 활용한 이진 영상의 Morphology 처리

간단한 영상처리 중 Dilte 와 Erode 에 대한 예로 Structuring element 를 활용하여 처리 한 것이다.

CvvImage image;

// Load Source Image
BOOL ok = image.Load( "test.bmp", 1);
if (!ok)
{
AfxMessageBox(_T("Cannot Load Image"));
return;
}

// Show Image Window
cvNamedWindow("original", CV_WINDOW_AUTOSIZE);
cvShowImage("original", image.GetImage());

IplImage* pImg = cvCloneImage( image.GetImage() );
IplImage* pBuf = cvCloneImage( image.GetImage() );

IplConvKernel elem;

int elemValueH[9] = {
0, 0, 0,
1, 1, 1,
0, 0, 0
};

int elemValueV[9] = {
0, 1, 0,
0, 1, 0,
0, 1, 0
};

elem.nCols = 3;
elem.nRows = 3;
elem.anchorX = 1;
elem.anchorY = 1;

// Dilation
elem.values = elemValueH;
cvDilate( pImg, pBuf, &elem, 5 );
cvNamedWindow("Dilate Horizontal", CV_WINDOW_AUTOSIZE);
cvShowImage("Dilate Horizontal", pBuf);

elem.values = elemValueV;
cvDilate( pImg, pBuf, &elem, 5 );
cvNamedWindow("Dilate Vertical", CV_WINDOW_AUTOSIZE);
cvShowImage("Dilate Vertical", pBuf);

// Erosion
elem.values = elemValueH;
cvErode( pImg, pBuf, &elem, 5 );
cvNamedWindow("Erode Horizontal", CV_WINDOW_AUTOSIZE);
cvShowImage("Erode Horizontal", pBuf);

elem.values = elemValueV;
cvErode( pImg, pBuf, &elem, 5 );
cvNamedWindow("Erode Vertical", CV_WINDOW_AUTOSIZE);
cvShowImage("Erode Vertical", pBuf);

// Release
cvReleaseImage( &pImg );
cvReleaseImage( &pBuf );




Dilate 나 Erode 수행시 Structuring element 를 생략하면 3x3 의 Structuring element로 간주하고 처리한다.

결과 영상
사용자 삽입 이미지

 









 

Original Post : http://neodreamer-dev.tistory.com/147

No comments :

Post a Comment