PhotoShop算法实现进阶-浮雕滤镜-灰度浮雕(三十一)
来源:互联网 发布:ubuntu wine 打不开 编辑:程序博客网 时间:2024/04/27 19:40
PhotoShop算法实现进阶-浮雕滤镜-灰度浮雕(三十一)
kezunhai@gmail.com
http://blog.csdn.net/kezunhai
浮雕效果可谓花样百出,但他们主要是基于图像相邻像素的差值来实现的。对于大多数图像而言,相邻像素的差值可能并不大,图像就有可能变黑。因此,通过加上一个偏移量,也就是调和浮雕和八方向浮雕中Offset,这个Offset也就称为浮雕的底色或背景色。灰度浮雕比八方向浮雕效果更佳,图像轮廓更分明,凹凸感更强烈,给人一种富有立体感的视觉冲击。
灰度浮雕也是基于一种模板运算,与前两种浮雕效果不同的是,灰度浮雕对模板个元素进行三级运算处理,然后进行卷积运算,最后将图像灰度化。
实现代码:
void PhotoShop::GrayEmboss(Mat& img, Mat& dst,double angle/* = 30*/, int offset/* = 127 */){if ( dst.empty())dst.create(img.rows, img.cols, img.type());int height = img.rows;int width = img.cols;int chns = img.channels();int border = 1;int i, j, k, p, q, index;double sum;// 根据三角函数求模板double radian = angle*PI/180.0;double dKernel[] = // 模板系数{cos(radian + PI/4), cos(radian + PI/2), cos(radian + 3.0*PI/4.0),cos(radian), 0, cos(PI),cos(radian - PI/2), cos(radian - PI/2), cos(radian - 3.0*PI/4.0)};for ( i= border; i<height-border; ++i){unsigned char* dstData = (unsigned char*)dst.data+dst.step*i;for ( j=border; j<width-border; ++j){for ( k=0; k<chns; k++){sum = 0;index = 0;for ( p=-border; p<=border; p++){for ( q = -border; q<=border; q++){sum += getPixel(img, i+p, j+q, k)*dKernel[index++];}}dstData[j*chns+k] = saturate_cast<uchar>(sum+offset);}}}}通过指定的角度,计算模板系数,然后进行模板操作,实现效果如图:
对上面的结果进行二值化后,如下图:
彩色浮雕与灰度浮雕的实现类似,如果将上述的模板系数改为:
double dKernel[] = // 模板系数{cos(radian + PI/4), cos(radian + PI/2), cos(radian + 3.0*PI/4.0),cos(radian), 1, cos(PI),cos(radian - PI/2), cos(radian - PI/2), cos(radian - 3.0*PI/4.0)};则可以实现彩色浮雕,效果如下:
通过前面两篇调和浮雕、八方向浮雕和本文的这个灰度浮雕的测试效果来看,没看出这几者的具体差异在哪,针对实际需要的效果,应该对模板进行必要的调整并做一些必要的后处理工作。
作者:kezunhai 出处:http://blog.csdn.net/kezunhai 欢迎转载或分享,但请务必声明文章出处。
0 0
- PhotoShop算法实现进阶-浮雕滤镜-灰度浮雕(三十一)
- PhotoShop算法实现进阶-浮雕滤镜-调和浮雕(二十九)
- PhotoShop算法实现进阶-浮雕滤镜-八方向浮雕(三十)
- 图像滤镜处理算法:灰度、黑白、底片、浮雕
- 图像滤镜处理算法:灰度、黑白、底片、浮雕
- 图像滤镜处理算法:灰度、黑白、底片、浮雕
- 图像滤镜处理算法:灰度、黑白、底片、浮雕
- 图像滤镜处理算法:灰度、黑白、底片、浮雕
- 图像滤镜处理算法:灰度、黑白、底片、浮雕
- 图像滤镜处理算法:灰度、黑白、底片、浮雕 (转)
- photoshop图像滤镜——浮雕算法(含matlab代码)
- 【Android图像处理】浮雕滤镜(效果)
- Android 浮雕遮罩滤镜(EmbossMaskFilter)
- 滤镜之浮雕Emboss
- canvas像素级操作实现滤镜之浮雕滤镜
- canvas像素级操作实现滤镜之浮雕滤镜
- PhotoShop算法实现进阶-模糊滤镜-平滑(二十一)
- PS 滤镜算法原理——浮雕效果
- pcl源码编译 全过程,主要使用kinfu。
- spring mvc+hibernate乱码
- 关于stdint.h(uint16_t uint32_t)
- Android SDK Manager中的集中组件(Components)的作用
- MySQL如何执行关联查询
- PhotoShop算法实现进阶-浮雕滤镜-灰度浮雕(三十一)
- B/S初探之新闻发布系统总结
- Struts2+Mybatis整合实现注册登录功能
- 字符串相似度计算
- 理解Java对象序列化
- 如何通过ffmpeg将音频文件转换成Mp3 转
- Strut2中ModelDriver和Action以及ValueStack生命周期的问题
- C++ 字符串運算
- chromium书签栏实现