欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望我们都能在人生路上开心快乐、共同成长。

该系列文章主要讲解Python OpenCV图像处理和图像识别知识,前期主要讲解图像处理基础知识、OpenCV基础用法、常用图像绘制方法、图像几何变换等,中期讲解图像处理的各种运算,包括图像点运算、形态学处理、图像锐化、图像增强、图像平滑等,后期研究图像识别、图像分割、图像分类、图像特效处理以及图像处理相关应用。

第二部分将讲解图像运算和图像增强,上一篇文章是图像点运算的灰度化处理知识,包括各种灰度算法的实现,以及灰度线性变换和灰度非线性变换。这篇文章将详细讲解图像灰度线性变换,包括灰度上移、对比度增强、对比度减弱和灰度反色变换。希望文章对您有所帮助,如果有不足之处,还请海涵。

文章目录

  • 一.灰度线性变换
  • 二.图像灰度上移变换
  • 三.图像对比度增强变换
  • 四.图像对比度减弱变换
  • 五.图像灰度反色变换
  • 六.总结

下载地址:

  • https://github.com/eastmountyxz/Python-zero2one

前文赏析:

第一部分 基础语法

  • [Python从零到壹] 一.为什么我们要学Python及基础语法详解
  • [Python从零到壹] 二.语法基础之条件语句、循环语句和函数
  • [Python从零到壹] 三.语法基础之文件操作、CSV文件读写及面向对象

第二部分 网络爬虫

  • [Python从零到壹] 四.网络爬虫之入门基础及正则表达式抓取博客案例
  • [Python从零到壹] 五.网络爬虫之BeautifulSoup基础语法万字详解
  • [Python从零到壹] 六.网络爬虫之BeautifulSoup爬取豆瓣TOP250电影详解
  • [Python从零到壹] 七.网络爬虫之Requests爬取豆瓣电影TOP250及CSV存储
  • [Python从零到壹] 八.数据库之MySQL基础知识及操作万字详解
  • [Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、键盘鼠标操作)
  • [Python从零到壹] 十.网络爬虫之Selenium爬取在线百科知识万字详解(NLP语料构造必备技能)

第三部分 数据分析和机器学习

  • [Python从零到壹] 十一.数据分析之Numpy、Pandas、Matplotlib和Sklearn入门知识万字详解(1)
  • [Python从零到壹] 十二.机器学习之回归分析万字总结全网首发(线性回归、多项式回归、逻辑回归)
  • [Python从零到壹] 十三.机器学习之聚类分析万字总结全网首发(K-Means、BIRCH、层次聚类、树状聚类)
  • [Python从零到壹] 十四.机器学习之分类算法三万字总结全网首发(决策树、KNN、SVM、分类算法对比)
  • [Python从零到壹] 十五.文本挖掘之数据预处理、Jieba工具和文本聚类万字详解
  • [Python从零到壹] 十六.文本挖掘之词云热点与LDA主题分布分析万字详解
  • [Python从零到壹] 十七.可视化分析之Matplotlib、Pandas、Echarts入门万字详解
  • [Python从零到壹] 十八.可视化分析之Basemap地图包入门详解
  • [Python从零到壹] 十九.可视化分析之热力图和箱图绘制及应用详解
  • [Python从零到壹] 二十.可视化分析之Seaborn绘图万字详解
  • [Python从零到壹] 二十一.可视化分析之Pyechart绘图万字详解
  • [Python从零到壹] 二十二.可视化分析之OpenGL绘图万字详解
  • [Python从零到壹] 二十三.十大机器学习算法之决策树分类分析详解(1)
  • [Python从零到壹] 二十四.十大机器学习算法之KMeans聚类分析详解(2)
  • [Python从零到壹] 二十五.十大机器学习算法之KNN算法及图像分类详解(3)
  • [Python从零到壹] 二十六.十大机器学习算法之朴素贝叶斯算法及文本分类详解(4)
  • [Python从零到壹] 二十七.十大机器学习算法之线性回归算法分析详解(5)
  • [Python从零到壹] 二十八.十大机器学习算法之SVM算法分析详解(6)
  • [Python从零到壹] 二十九.十大机器学习算法之随机森林算法分析详解(7)
  • [Python从零到壹] 三十.十大机器学习算法之逻辑回归算法及恶意请求检测应用详解(8)
  • [Python从零到壹] 三十一.十大机器学习算法之Boosting和AdaBoost应用详解(9)
  • [Python从零到壹] 三十二.十大机器学习算法之层次聚类和树状图聚类应用详解(10)

第四部分 Python图像处理基础

  • [Python从零到壹] 三十三.图像处理基础篇之什么是图像处理和OpenCV配置
  • [Python从零到壹] 三十四.OpenCV入门详解——显示读取修改及保存图像
  • [Python从零到壹] 三十五.图像处理基础篇之OpenCV绘制各类几何图形
  • [Python从零到壹] 三十六.图像处理基础篇之图像算术与逻辑运算详解
  • [Python从零到壹] 三十七.图像处理基础篇之图像融合处理和ROI区域绘制
  • [Python从零到壹] 三十八.图像处理基础篇之图像几何变换(平移缩放旋转)
  • [Python从零到壹] 三十九.图像处理基础篇之图像几何变换(镜像仿射透视)
  • [Python从零到壹] 四十.图像处理基础篇之图像量化处理
  • [Python从零到壹] 四十一.图像处理基础篇之图像采样处理
  • [Python从零到壹] 四十二.图像处理基础篇之图像金字塔向上取样和向下取样

第五部分 Python图像运算和图像增强

  • [Python从零到壹] 四十三.图像增强及运算篇之图像点运算和图像灰度化处理
  • [Python从零到壹] 四十四.图像增强及运算篇之图像灰度线性变换详解

第六部分 Python图像识别和图像高阶案例

第七部分 NLP与文本挖掘

第八部分 人工智能入门知识

第九部分 网络攻防与AI安全

第十部分 知识图谱构建实战

扩展部分 人工智能高级案例

作者新开的“娜璋AI安全之家”将专注于Python和安全技术,主要分享Web渗透、系统安全、人工智能、大数据分析、图像识别、恶意代码检测、CVE复现、威胁情报分析等文章。虽然作者是一名技术小白,但会保证每一篇文章都会很用心地撰写,希望这些基础性文章对你有所帮助,在Python和安全路上与大家一起进步。


一.灰度线性变换

图像的灰度线性变换是通过建立灰度映射来调整原始图像的灰度,从而改善图像的质量,凸显图像的细节,提高图像的对比度。灰度线性变换的计算公式如(12-1)所示:

该公式中DB表示灰度线性变换后的灰度值,DA表示变换前输入图像的灰度值,α和b为线性变换方程f(D)的参数,分别表示斜率和截距[1-4]。

  • 当α=1,b=0时,保持原始图像
  • 当α=1,b!=0时,图像所有的灰度值上移或下移
  • 当α=-1,b=255时,原始图像的灰度值反转
  • 当α>1时,输出图像的对比度增强
  • 当0<α<1时,输出图像的对比度减小
  • 当α<0时,原始图像暗区域变亮,亮区域变暗,图像求补

如图12-1所示,显示了图像的灰度线性变换对应的效果图。


二.图像灰度上移变换

该算法将实现图像灰度值的上移,从而提升图像的亮度。

  • DB=DA+50

具体实现代码如下所示。由于图像的灰度值位于0至255区间之内,所以需要对灰度值进行溢出判断。

# -*- coding: utf-8 -*-
# By:Eastmount
import cv2
import numpy as np
import matplotlib.pyplot as plt#读取原始图像
img = cv2.imread('luo.png')#图像灰度转换
grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#获取图像高度和宽度
height = grayImage.shape[0]
width = grayImage.shape[1]#创建一幅图像
result = np.zeros((height, width), np.uint8)#图像灰度上移变换 DB=DA+50
for i in range(height):for j in range(width):if (int(grayImage[i,j]+50) > 255):gray = 255else:gray = int(grayImage[i,j]+50)result[i,j] = np.uint8(gray)#显示图像
cv2.imshow("Gray Image", grayImage)
cv2.imshow("Result", result)#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

其输出结果如图12-2所示,图像的所有灰度值上移50,图像变得更白了。注意,纯黑色对应的灰度值为0,纯白色对应的灰度值为255。


三.图像对比度增强变换

该算法将增强图像的对比度,Python实现代码如下所示。

  • DB=DA×1.5
# -*- coding: utf-8 -*-
# By:Eastmount
import cv2
import numpy as np
import matplotlib.pyplot as plt#读取原始图像
img = cv2.imread('luo.png')#图像灰度转换
grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#获取图像高度和宽度
height = grayImage.shape[0]
width = grayImage.shape[1]#创建一幅图像
result = np.zeros((height, width), np.uint8)#图像对比度增强变换 DB=DA×1.5
for i in range(height):for j in range(width):if (int(grayImage[i,j]*1.5) > 255):gray = 255else:gray = int(grayImage[i,j]*1.5)result[i,j] = np.uint8(gray)#显示图像
cv2.imshow("Gray Image", grayImage)
cv2.imshow("Result", result)

其输出结果如图12-3所示,图像的所有灰度值增强1.5倍。


四.图像对比度减弱变换

该算法将减弱图像的对比度,Python实现代码如下所示。

  • DB=DA×0.8
# -*- coding: utf-8 -*-
# By:Eastmount
import cv2
import numpy as np
import matplotlib.pyplot as plt#读取原始图像
img = cv2.imread('luo.png')#图像灰度转换
grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#获取图像高度和宽度
height = grayImage.shape[0]
width = grayImage.shape[1]#创建一幅图像
result = np.zeros((height, width), np.uint8)#图像对比度减弱变换 DB=DA×0.8
for i in range(height):for j in range(width):gray = int(grayImage[i,j]*0.8)result[i,j] = np.uint8(gray)#显示图像
cv2.imshow("Gray Image", grayImage)
cv2.imshow("Result", result)#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

其输出结果如图12-4所示,图像的所有灰度值减弱,图像变得更暗。


五.图像灰度反色变换

反色变换又称为线性灰度求补变换,它是对原图像的像素值进行反转,即黑色变为白色,白色变为黑色的过程。

  • DB=255-DA

其Python实现代码如下所示:

# -*- coding: utf-8 -*-
# By:Eastmount
import cv2
import numpy as np
import matplotlib.pyplot as plt#读取原始图像
img = cv2.imread('luo.png')#图像灰度转换
grayImage = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#获取图像高度和宽度
height = grayImage.shape[0]
width = grayImage.shape[1]#创建一幅图像
result = np.zeros((height, width), np.uint8)#图像灰度反色变换 DB=255-DA
for i in range(height):for j in range(width):gray = 255 - grayImage[i,j]result[i,j] = np.uint8(gray)#显示图像
cv2.imshow("Gray Image", grayImage)
cv2.imshow("Result", result)#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()

其输出结果如图12-5所示,图像处理前后的灰度值是互补的。

图像灰度反色变换在医学图像处理中有一定的应用,如图12-6所示:

六.总结

本文主要讲解图像灰度线性变换,包括图像灰度上移、图像对比度增强变换、图像对比度减弱变换和图像灰度反色变换。希望大家一定要自己实现文章中的代码,更好地提升编程能力。

感谢在求学路上的同行者,不负遇见,勿忘初心。图像处理系列主要包括三部分,分别是:

祝大家新年快乐,虎年大吉,阖家幸福,万事如意,小珞珞给大家拜年了。亲情是真的很美,很治愈。希望小珞珞和他妈妈能开心每一天,全家人身体健康。小珞珞这小样子可爱极了,爱你们喔!

(By:娜璋之家 Eastmount 2022-02-28 夜于武汉 https://blog.csdn.net/Eastmount )


参考文献:

  • [1] 阮秋琦. 数字图像处理学(第3版)[M]. 北京:电子工业出版社,2008.
  • [2] 毛星云,冷雪飞. OpenCV3编程入门[M]. 北京:电子工业出版社,2015.
  • [3] Eastmount. [数字图像处理] 三.MFC实现图像灰度、采样和量化功能详解[EB/OL]. (2015-05-28). https://blog.csdn.net/eastmount/article/details/46010637.
  • [4] Eastmount. [Python图像处理] 十五.图像的灰度线性变换[EB/OL]. ( 2019-03-28). https://blog.csdn.net/Eastmount/article/details/88858696.

[Python从零到壹] 四十四.图像增强及运算篇之图像灰度线性变换详解相关推荐

  1. [Python从零到壹] 五十九.图像增强及运算篇之图像锐化Scharr、Canny、LOG实现边缘检测

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  2. [Python从零到壹] 五十八.图像增强及运算篇之图像锐化Sobel、Laplacian算子实现边缘检测

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  3. [Python从零到壹] 五十二.图像增强及运算篇之图像掩膜直方图和HS直方图

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  4. [Python从零到壹] 四十五.图像增强及运算篇之图像灰度非线性变换详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  5. [Python从零到壹] 五十六.图像增强及运算篇之图像平滑(中值滤波、双边滤波)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  6. [Python从零到壹] 五十五.图像增强及运算篇之图像平滑(均值滤波、方框滤波、高斯滤波)

    又是一年1024,首先,祝大家节日快乐! 欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界 ...

  7. [Python从零到壹] 五十四.图像增强及运算篇之局部直方图均衡化和自动色彩均衡化处理

    首先,祝大家教师节和中秋节快乐! 欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文 ...

  8. [Python从零到壹] 四十九.图像增强及运算篇之顶帽运算和底帽运算

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  9. [Python从零到壹] 六十四.图像识别及经典案例篇之图像傅里叶变换和傅里叶逆变换详解

    祝大家新年快乐,阖家幸福,健康快乐! 欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所 ...

  10. [Python从零到壹] 四十八.图像增强及运算篇之形态学开运算、闭运算和梯度运算

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

最新文章

  1. TensorFlow之图结构与TensorBoard可视化
  2. java file取不到linux文件_Java中高级核心知识全面解析——Linux基本命令(切换、增删改查、压缩文件、权限命令)...
  3. Window下VS运行达梦DPI
  4. 分布式系统原理 之6 两阶段提交协议
  5. java基础应用_Java基础(应用篇)
  6. Android中Fragment生命周期和基本用法
  7. 搭建迁移训练Slim框架环境
  8. 阶段3 2.Spring_02.程序间耦合_1 编写jdbc的工程代码用于分析程序的耦合
  9. java.lang.RuntimeException: Package manager has died
  10. ASCALL码表对照表 最全、最成体系表格 与对比
  11. 小程序的通知授权功能
  12. ubuntu 16.04软件源
  13. 大家好,我是练习时长两年半的LeetCode爱好者,喜欢唱跳rap
  14. oracle round 没有0,oracle round函数的使用方法
  15. 博客群建,SEO多用户博客群建-skycc多用户博客群建系统
  16. iOS 15 TableView刷新组头适配问题
  17. 山东大学软件质量保证与测试技术复习纲要
  18. BugKu CTF(杂项篇MISC)---细心的大象
  19. 腾讯天美测开一面面经
  20. 第13章 管理身份和身份验证

热门文章

  1. 前端 | 表格(table)的合并
  2. iMac重装系统的问题:无法与恢复服务器取得联系/将安装器信息下载到目标卷宗失败
  3. VNC 锁屏之后无法输入密码解锁
  4. 耳机插入电脑没反应找不到realtek音频管理器
  5. 联想服务器装系统不能加载硬盘,联想电脑重装系统读不出硬盘怎么办
  6. atmega128 单片机 20以内加减法训练机 做的过程
  7. “暗云”BootKit木马详细技术分析
  8. html显示当前小时分钟秒秋,北语18秋《网页制作》作业1234
  9. 抱薪者说 | 赛博仏客:造物者无尽藏
  10. 16 张图解 | 淘宝 10年架构演进