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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 字符串正则匹配leetcode_动态规划100题

    字符串正则匹配leetcode_动态规划100题原题链接给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例 1:输入:s = “aa” p = “a”输出:false解释:”a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa” p = “a*”输出:true解释:因为 ‘*’ 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是

    2022年8月9日
    5
  • latex中希腊字母怎么输入_在电脑上怎么打希腊字母

    latex中希腊字母怎么输入_在电脑上怎么打希腊字母$$\alpha\quad\beta$$%\quad空格的意思$$\gamma\quad\Gamma$$$$\delta\quad\Delta$$$$\theta\quad\Theta$$$$\epsilon\quad\pi$$$$\Pi\quad\omega$$$$\Omega$$

    2022年10月13日
    2
  • Ubuntu卸载软件_ubuntu卸载桌面

    Ubuntu卸载软件_ubuntu卸载桌面ubuntu删除软件和相关配置记录一下,记不住,避免每次都查1、卸载命令一般的卸载方式:sudoapt-getremovexxxx卸载并清除相关配置命令sudoapt-getremove–purgexxxx例如想删除Vimsudoapt-getremove–purgevim…

    2022年10月5日
    3
  • LINQ&EF任我行(二)–LinQ to Object (转)

    LINQ&EF任我行(二)–LinQ to Object (转)

    2021年7月9日
    95
  • 【免费分享】让思路更清晰,思维导图教程及工具[通俗易懂]

    思维导图,让思路更清晰,结构更完整。当你大脑一片混乱不知道该从什么地方做起,可以试着使用一下思维导图工具。昨天列了一下这一年关于自己提升的一些方面,使用思维导图进行简单的列举,有一些好友希望知道我使用的是那个工具来画思维导图的。下面简单介绍一些思维导图工具,在日常生活和工作中希望能够帮助到你。XMind【离线】XMind是一个开源的脑图项目,可以自由下载使用。有XMind Plus…

    2022年2月28日
    51
  • 如何解决eclipse中的中文乱码问题[通俗易懂]

    eclipse中文乱码都是因为字符编码与默认的编码不符合导致的,有很多的方法可以解决,不需要安装任何插件就可以搞定。针对不同的情况,需要使用不同的方案,下面就针对一些案例讲解如何解决乱码问题。解决乱码问题的主要思路是设置正确合适的编码,如果不知道目标文件原本的编码,可以进行一定的尝试,通常尝试下GBK和UTF-8这两个编码即可。方法1设置单个文件的字符编码,解决单个文件的乱码问题有时候不小心cop…

    2022年4月3日
    44

发表回复

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

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