PhotoShop算法实现进阶-浮雕滤镜-灰度浮雕(三十一)

PhotoShop算法实现进阶-浮雕滤镜-灰度浮雕(三十一)PhotoShop算法实现进阶-浮雕滤镜-灰度浮雕(三十一)kezunhai@gmail.comhttp://blog.csdn.net/kezunhai    浮雕效果可谓花样百出,但他们主要是基于图像相邻像素的差值来实现的。对于大多数图像而

大家好,又见面了,我是你们的朋友全栈君。

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);							
			}		
		}
	}
}

       通过指定的角度,计算模板系数,然后进行模板操作,实现效果如图:

PhotoShop算法实现进阶-浮雕滤镜-灰度浮雕(三十一)

    对上面的结果进行二值化后,如下图:

PhotoShop算法实现进阶-浮雕滤镜-灰度浮雕(三十一)

        彩色浮雕与灰度浮雕的实现类似,如果将上述的模板系数改为:

	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)
	};

则可以实现彩色浮雕,效果如下:

PhotoShop算法实现进阶-浮雕滤镜-灰度浮雕(三十一)
      通过前面两篇调和浮雕、八方向浮雕和本文的这个灰度浮雕的测试效果来看,没看出这几者的具体差异在哪,针对实际需要的效果,应该对模板进行必要的调整并做一些必要的后处理工作。

作者:kezunhai 出处:http://blog.csdn.net/kezunhai 欢迎转载或分享,但请务必声明文章出处。


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151383.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • webpack(9)plugin插件功能的使用「建议收藏」

    webpack(9)plugin插件功能的使用「建议收藏」plugin插件是webpack的支柱功能。webpack自身也是构建于你在webpack配置中用到的相同的插件系统之上!插件目的在于解决loader无法实现的其他事。常用的插件

    2022年7月30日
    3
  • 实战|手把手教你用Python爬取存储数据,还能自动在Excel中可视化!「建议收藏」

    实战|手把手教你用Python爬取存储数据,还能自动在Excel中可视化!「建议收藏」大家好,在之前我们讲过如何用Python构建一个带有GUI的爬虫小程序,很多本文将迎合热点,延续上次的NBA爬虫GUI,探讨如何爬取虎扑NBA官网数据。 并且将数据写入Excel中同时自动生

    2022年7月5日
    36
  • 朋友圈集赞小程序 最新版_朋友圈虚拟点赞软件

    朋友圈集赞小程序 最新版_朋友圈虚拟点赞软件大家好这是一款朋友圈积攒截图小程序里面内涵三款样式生成,一款图文,一款分享,一款查看的样式也就是我们微信朋友圈所用到的样式就包含了里面的流量主那些可以用户自由的添加哈!赞的数量那些可以用户自定义的哈另外所需的内容也是用户自定义的安装方法的话和往常一样!直接微信开发者工具打开源码然后设置一个合法域名上传审核就可以了合法域名在压缩包里面,搭建解压了就可以看到了小程序源码下载地址:…

    2025年9月16日
    4
  • 5V升压到12.6V的锂电池充电IC芯片方案FS4062B[通俗易懂]

    5V升压到12.6V的锂电池充电IC芯片方案FS4062B[通俗易懂]三节3.7V的锂电池串联,11.1V和最大12.6V锂电池充电电路的解决方案。在应用中,一般使用低压5V,如USB和TYPE-C口直接输入的给三串锂电池充电,还有是15V或者18V,20V输入降压给锂电池充电的两种情况。  FS4062B是输入5V升压充电管理芯片,FS4008A是输入15V-20V降压充电三节锂电池IC  FS4062B是一款5V输入,最大1.2A充电电流,支持三节锂离子电池的升压充电管理IC。FS4062B外置MOS,自适应充电,采用异步开关架构,使其在应用时仅需极少的外围器

    2022年10月6日
    3
  • linux之lvm分区扩容[通俗易懂]

    linux之lvm分区扩容[通俗易懂]以下步骤的前提为磁盘lvm分区1、加入新硬盘2、分区PV(physicalvolume)即物理卷,就是物理磁盘,可以通过fdisk-l查看操作系统有几块硬盘VG(volumegroup)即卷组,就是一组物理磁盘的组合,里面可以有一块硬盘也可以有多块硬盘LV(logicalvolume)及逻辑卷,就是在VG(指定的物理磁盘组)里面划分出来的可以说成是PV就是硬盘…

    2022年6月20日
    241
  • Google打不开的解决方法和IP地址表「建议收藏」

    Google打不开的解决方法和IP地址表「建议收藏」 Google打不开的解决方法和IP地址表  本文将给出一些能够正常访问被屏蔽的Google搜索引擎的常用方法以及Google的IP地址表。  在Google.com里面进行搜索的时候,经常会遇到突然出现“该页无法显示”的提示,并且之后的十多分钟都无法正常连接Google,这里给出一些方法,可以解决大部分Google无法访问或进不去的问题。  1、如果是搜索过程中出现“该页无法显示”的提示,接着

    2022年9月29日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号