导读

过几天就是清明节了,作为传统节日,特别是一个有放假的传统节日,我觉得有必要安排一下。正好赶上买了贾志刚老师(opencv学堂)的课程听了几天的音频,正好可以把上面的知识点拿来分享。——关于查找表以及滤镜的实现

微信公众号:AI算法与图像处理如果你觉得对你有帮助,分享和转发

一 清明节简介

清明节,又称踏青节、行清节、三月节、祭祖节,节期在仲春与暮春之交。清明兼具自然与人文两大内涵,既是自然节气点,也是传统节日。清明节是传统的重大春祭节日,扫墓祭祀、缅怀祖先,是中华民族数千年以来的优良传统,不仅有利于弘扬孝道亲情、唤醒家族共同记忆,还可促进家族成员乃至民族的凝聚力和认同感。清明节融汇自然节气与人文风俗为一体,是天时地利人和的合一,充分体现了中华民族先祖们追求“天、地、人”的和谐合一,讲究顺应天时地宜、遵循自然规律的思想。清明节的节俗丰富,扫墓祭祖与踏青郊游是清明节的两大礼俗主题,这两大传统礼俗主题在中国自古传承,至今不辍。

——嗯,没错,百度百科说的

二 清明上河图

说起“清明节”,我想大家一定会想到《清明上河图》,但是我一百度,其实“清明节”和《清明上河图》是无关的,具体的可以去百度了解一哈。

清明上河图,中国十大传世名画之一。为北宋风俗画,北宋画家张择端仅见的存世精品,属国宝级文物,现藏于北京故宫博物院。

三 LUT介绍——查找表

LUT(look up table)基本思想是查表,既将矩阵中所有可能遇到的值都计算一遍储存在数组中,在遍历过程中只是将对应的查表值进行赋值即可,这样可以避免大量的重复计算,这是典型的使用存储空间换取速度的做法。

例如以下图展示了一个查找表实现将低对比度的图转变为高对比度的原理图:

典型应用:滤镜,利用LUT转换成不同效果的图像

原图

加滤镜后的效果图

四 滤镜原理

我们都知道常见的色彩空间有RGB、CMY、HSV等等,其中最经常用到的当属RGB了,当然这些色彩空间之间是可以互相转换的。

而滤镜实际上就是通过对RGB三个通道的值进行一定的运算得到一个新的值,然后再显示出来。,其他通道的值保持不变。

五 代码实现

为了让大家能够重现效果并理解底层的原理,这里使用了三种方法进行实现分别如下所示:本人所用的环境:python3.6

所需要的导入的库:(1) cv2  (2) numpy  (3) PIL

(1)对图像的三个通道亮度值进行直接修改的方法实现——实现“流年”滤镜效果

思路:

  1. 以RGB格式读入图片

  2. 将 R 通道的值提取出来并进行运算用im1存储(图像的矩阵*[1.0,0,0]让另外两个通道的值变成0),同理另外两个通道的值用im2存储

  3. 最后将im1和im2相加,并转换一下可以显示的格式即可

    def fleeting(self):src=Image.open(self.path)src.show()img=np.asarray(Image.open(self.path).convert('RGB'))img1=np.sqrt(img*[1.0,0.0,0.0])*self.paramsimg2=img*[0.0,1.0,1.0]img=img1+img2img=Image.fromarray(np.array(img).astype('uint8'))img.show()

原图

“流年”效果图

(2)利用opencv中的函数实现

opencv中可以直接调用:

cv2.applyColorMap(img, cv2.COLORMAP)
# 其中img为输入图片,cv2.COLORMAP为可选的效果

如下所示:可以将cv2.COLORMAP替换为下面的英文单词或者对应的数字皆可

cv2.applyColorMap(img, cv2.COLORMAP_COLL)

cool风格的清明上河图

(3)利用PIL中函数实现

PIL中通过调用filter函数,参数传递ImageFilter下的滤镜参数即可实现各种滤镜效果的图案

   def lut_PIL(self): src=Image.open(self.path)  im2 = src.filter(ImageFilter.BLUR)  # 模糊滤镜 im2.save("qm_1.jpg")  im2 = src.filter(ImageFilter.EMBOSS)  # 浮雕效果滤镜 im2.save("qm_2.jpg")  im2 = src.filter(ImageFilter.EDGE_ENHANCE)  # 凸显边界 im2.save("qm_3.jpg")  im2 = src.filter(ImageFilter.EDGE_ENHANCE_MORE)  # 加倍凸显边界  im2.save("qm_4.jpg")  im2 = src.filter(ImageFilter.FIND_EDGES)  # 只保留边界  im2.save("qm_5.jpg")  im2 = src.filter(ImageFilter.CONTOUR)  # 铅笔画效果 im2.save("qm_6.jpg")  im2 = src.filter(ImageFilter.SMOOTH_MORE)  # 平滑滤镜(阀值更大)

img.filter(ImageFilter.EMBOSS) #实现浮雕效果

浮雕效果的清明上河图

完整代码:https://github.com/SCUTPZW/opencv/blob/master/LUT_qm

六 总结

  1. 清明将至,学一下传统的文化

  2. 了解LUT(look up table 查找表)和滤镜的原理

  3. 通过对图片的三个通道值进行改变和利用opencv和PIL的函数三种方法实现不同的滤镜效果

—END—

python带你过不一样的“清明节”和看神奇的《清明上河图》相关推荐

  1. python给图片加滤镜的方程_清明节来了,我们用Python给《清明上河图》加了个滤镜...

    原标题:清明节来了,我们用Python给<清明上河图>加了个滤镜 导读:过几天就是清明节了.传统节日,特别是一个放假的传统节日,我觉得有必要安排一下.最近在研究查找表以及滤镜的实现,正好赶 ...

  2. python对财务人员的帮助-还不熟练VBA的财务人,让Python带你弯道超车!

    原标题:还不熟练VBA的财务人,让Python带你弯道超车! 相信做财务的同学肯定对VBA这门编程语言并不感到陌生. VBA可以帮助我们快速的处理大量的数据,一些复杂的逻辑或需要重复操作的处理也可以用 ...

  3. python带我起飞_Python带我起飞:入门、进阶、商业实战

    <Python带我起飞:入门.进阶.商业实战>针对Python3.5以上版本,采用"理论+实践"的形式编写,通过大量的实例(共42个),全面而深入地讲解"Py ...

  4. Python 带你来一次说走就走的环球旅行

    1.目 标 场 景 十一长假,相信大部分的朋友这会应该是在全国各地浪或者是在浪的路上,朋友圈成为你们表演的场所. 当然,也有一小戳朋友是选择家里蹲,你们是否感觉到无聊?是否想出去浪,参加朋友圈摄影比赛 ...

  5. python骗局-代购被骗?Python带你征服骗子!直接干掉他的网站!亲身经历!

    原标题:代购被骗?Python带你征服骗子!直接干掉他的网站!亲身经历! 以前一直也相安无事,直到前天,找了个代购,想买买supreme的tee, 作为一个冉冉升起的新星黑客,我竟然被骗了..很扎心, ...

  6. python权重是什么意思_在python带权重的列表中随机取值的方法

    1 random.choice python random模块的choice方法随机选择某个元素 foo = ['a', 'b', 'c', 'd', 'e'] from random import ...

  7. Python带*参数和带**参数:可变参数

    一.理论解释: *参数与**参数是Python参数中的重点知识,他们都被称为可变参数(任意参数),我们经常会在代码中看到*args.**kwargs 作为函数定义时:收集未匹配参数组成tuple或di ...

  8. python 阻止锁屏_想要自己的手机锁屏更加安全吗?python带你打造个性的锁屏控件...

    原标题:想要自己的手机锁屏更加安全吗?python带你打造个性的锁屏控件 Python是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了 ...

  9. python短视频自动制作_短视频篇 | Python 带你进行短视频二次创作

    1 目 标 场 景 无论是抖音还是快手等视频平台,一旦一个视频火了后,很多 UP 主都会争先抢后去模仿拍摄或剪辑,然后上传到平台,最后都能带来不错的流量. 对于一般的短视频,完全可以通过裁剪.特效转场 ...

  10. 让Python带你看一场唯美的横飘雪!

    "北国风光,千里冰封,万里雪飘",这句诗描写了一句美丽肃静的风光图,恰逢昨天笔者这边也下了一场比较大的雪,要不今天就用Python带大家也来领略一次美丽的雪景? 开发环境 版本:P ...

最新文章

  1. 250鲁大师跑分_看了鲁大师跑分,会发现MX250独显笔记本已落伍了
  2. 批量更改Windows操作系统文件名
  3. Android SDK更新的问题
  4. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习...
  5. java复制类mytool_MyTools
  6. DCMTK:使用JPEG-LS传输语法解压缩DICOM文件
  7. 微信“支付”页全国多地上线“出行服务”,已覆盖108城
  8. org.hibernate.HibernateException: 'hibernate.dialect' must be set when no Connection avalable
  9. 空间换时间--程序策略
  10. 每日三道前端面试题--vue 第三弹
  11. bp神经网络预测模型实例,bp神经网络模型的建立
  12. 教师资格证报名网页打不开,解决新版IE浏览器无法打开教师资格证页面问题(不需要添加兼容性站点!)
  13. 伊斯坦布尔美丽风景mac高清桌面动态壁纸
  14. ENFI下载器:1元20G高速下载流量,首次使用送3G
  15. flutter开发android部分页面,Flutter(Android 混合开发)
  16. 打造百万级访问网站的技术准备
  17. python自动刷新12306抢票
  18. 王者荣耀吃鸡气泡等等头像框DIY在线生成N种风格微信小程序源码下载
  19. アプリケーションコンポーネント(大分類)
  20. MyBatis与Spring整合

热门文章

  1. bugku上disordered_zip
  2. 浏览器edge插件的安全与个人隐私
  3. 各国市场分析(荷兰)
  4. 排列组合、伯努利试验
  5. 转:信息部是管理部门or服务部门?这些CIO在群里“吵” 起来了
  6. 用友云实名认证,了解一下
  7. 英语诗歌中的格律与韵 | Meter Rhyme
  8. 中国大学生学习与发展追踪研究(2007年至今)与中国综合社会调查(2003-2017年)与中国社会状况综合调查(2006-2019年)
  9. 二行代码解决全部网页木马(含iframe/script木马)
  10. 程序员工资真的高吗?