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 欢迎转载或分享,但请务必声明文章出处。


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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 回路(一笔画问题)

    回路(一笔画问题)

  • af-s af-f_read fpdma queued

    af-s af-f_read fpdma queued1.PDAF驱动功能验证1.1pdaflog设置log设置,打开AF(8),State(2),Sensor(2)的logCT30P:/#cat/vendor/etc/camera/camxoverridesettings.txtoverrideLogLevels=0x3FlogWarningMask=0x08000202logInfoMask=0x08000202logVerboseMask=0x08000202enable3ADebugData=TRUEdumpSens

  • 搭建备份服务器

    搭建备份服务器一、rsync的特性rsync的特性:1、支持拷贝特殊文件,设备等2、可以有排除指定文件或者目录同步的功能,相当于tar的排除功能3、可以做到保持源文件或目录的权限、时间、软硬连接、属主

  • LASSO回归与L1正则化 西瓜书「建议收藏」

    1.结构风险与经验风险在支持向量机部分,我们接触到松弛变量,正则化因子以及最优化函数,在朴素贝叶斯分类,决策树我们也遇到类似的函数优化问题。其实这就是结构风险和经验风险两种模型选择策略,经验风险负责最小化误差,使得模型尽可能的拟合数据,而结构风险则负责规则化参数,使得参数的形式尽量简洁,从而达到防止过拟合的作用.所以针对常见模型,我们都有下式:                           …

  • 中国it人物_计算机界的名人

    中国it人物_计算机界的名人2006.9.2 07:19早起者并不一定收获最多,但成功者一定是方向对,善管理风险的人。  不管是寿国梁、曹军这样的无奈者,还是张树新、王峻涛这样的迷失者,其先发优势都已消失殆净。  从“先驱”到“先烈”的转变,折射出的是市场的易变性和持续成功的“无规律性”。这种“无规律性”既表现在你所需要坚持的东西上,也表现在日常的经营管理中。  8848

  • 【 Linux学习】SSH连接时出现Host key verification failed的原因及解决方法以及ssh-keygen命令的用法

    【 Linux学习】SSH连接时出现Host key verification failed的原因及解决方法以及ssh-keygen命令的用法一、问题描述今天下午使用ssh连接其他服务器进行scp操作的时候,提示失败,如下所示:[root@localhostbackups]#scproot@172.xxx.xxx.xxx:/data/gitlabData/backups/1539717714_2018_10_17_9.4.3_gitlab_backup.tar.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@……

    2022年10月21日

发表回复

您的电子邮箱地址不会被公开。

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