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