原理:
只需要把原图上的一个像素减去右下角45°方向上的最邻近像素,加上128,再整体做绝对值处理,大于255的设为255即可。
代码如下:
void Ctext::Emboss(IplImage* im)
{
IplImage* emboss = cvCreateImage(cvGetSize(im), IPL_DEPTH_8U, 1);
CvScalar pixel0, pixel1,temppixel;
for (int i = 0; i < im->height - 1; i++)
{
for (int j = 0; j < im->width - 1; j++)
{
pixel0 = cvGet2D(im, i, j);
pixel1 = cvGet2D(im, i+1, j+1);
temppixel.val[2] =abs( pixel0.val[2] - pixel1.val[2] + 128);
temppixel.val[1] = abs(pixel0.val[1] - pixel1.val[1] + 128);
temppixel.val[0] = abs(pixel0.val[0] - pixel1.val[0] + 128);
cvSet2D(emboss, i, j, temppixel);
}
}
cvNamedWindow("White", CV_WINDOW_AUTOSIZE);
cvShowImage("White", emboss);
cvWaitKey(0);
cvDestroyWindow("White");
cvReleaseImage(&emboss);
}
效果图: