跟我学 Python 图像处理丨图像特效处理:毛玻璃、浮雕和油漆特效
本文分享自华为云社区《[Python图像处理] 二十四.图像特效处理之毛玻璃、浮雕和油漆特效》,作者:eastmount。
一.图像毛玻璃特效
图像毛玻璃特效如图所示,左边为原始图像,右边为毛玻璃特效图像。它是用图像邻域内随机一个像素点的颜色来替代当前像素点颜色的过程,从而为图像增加一个毛玻璃模糊的特效。
PS:该图片为作者去喀纳斯拍摄,真心美!
Python 实现代码主要是通过双层循环遍历图像的各像素点,再用定义的随机数去替换各邻域像素点的颜色,具体代码如下所示。
二.图像浮雕特效
图像浮雕特效是仿造浮雕艺术而衍生的处理,它将要呈现的图像突起于石头表面,根据凹凸程度不同形成三维的立体效果。Python 绘制浮雕图像是通过勾画图像的轮廓,并降低周围的像素值,从而产生一张具有立体感的浮雕效果图。传统的方法是设置卷积核,再调用 OpenCV 的 filter2D()函数实现浮雕特效。该函数主要是利用内核实现对图像的卷积运算,其函数原型如下所示:
dst = filter2D(src, ddepth, kernel[, dst[, anchor[, delta[, borderType]]]])
src 表示输入图像
dst 表示输出的边缘图,其大小和通道数与输入图像相同
ddepth 表示目标图像所需的深度
kernel 表示卷积核,一个单通道浮点型矩阵
anchor 表示内核的基准点,其默认值为(-1,-1),位于中心位置
delta 表示在储存目标图像前可选的添加到像素的值,默认值为 0
borderType 表示边框模式
核心代码如下:
本小节将直接对各像素点进行处理,采用相邻像素相减的方法来得到图像轮廓与平面的差,类似边缘的特征,从而获得这种立体感的效果。为了增强图片的主观感受,还可以给这个差加上一个固定值,如 150。实现效果如图所示。
Python 通过双层循环遍历图像的各像素点,使用相邻像素值之差来表示当前像素值,从而得到图像的边缘特征,最后加上固定数值 150 得到浮雕效果,具体代码如下所示。
三.图像油漆特效
图像油漆特效类似于油漆染色后的轮廓图形,它主要采用自定义卷积核和 cv2.filter2D()函数实现,Python 实现代码主要通过 Numpy 定义卷积核,再进行特效处理,卷积核如公式(13-1)所示,其中心权重为 10,其余值均为-1。
完整代码如下所示:
输出结果如下图所示:
四.本文小结
讲到这里,作者将分享的几个特效就讲解完毕,后续将继续分享包括素描、黄昏、灯光、流光等效果,希望读者喜欢。最后补充作者五一假期的一些感受!
《这些年璋娜去过的地方》一座城市,一道文化。一个故事,两个主角。这些年璋娜走过的山河,陪你感受这大千世界,留下的片片剪影和段段文字,异样的人生,精彩的生活。
青海•茶卡盐湖 2017-8-30。纯洁、清澈、蓝白交织,如同一场梦境,美得恍如隔世,它就是“天空之境”茶卡盐湖。
新疆•伊犁赛里木湖 2018-9-15。大西洋上最后的一滴眼泪,总闪烁着圣洁迷人的样子,不挂一丝,不染一尘。这就是伊犁的赛里木湖。站在空中草原拉那提,自己是那么的渺小,人生那些破事根本不值一提,热爱生命,敬畏自然。
(By:娜璋之家 Eastmount 2021-08-21 夜于贵阳)
参考文献:
《数字图像处理》(第 3 版),冈萨雷斯著,阮秋琦译,电子工业出版社,2013 年.
《数字图像处理学》(第 3 版),阮秋琦,电子工业出版社,2008 年,北京.
《OpenCV3 编程入门》,毛星云,冷雪飞,电子工业出版社,2015,北京.
有苦向瓜诉说 - 用 Python 来画浮雕画
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/1b70cd80f567c841cf559bd22】。文章转载请联系作者。
评论