python灰度图片格式_[Python图像处理] 十五.图像的灰度线性变换
[Python图像处理] 十五.图像的灰度线性变换
发布时间:2019-03-28 00:08,
浏览次数:619
, 标签:
Python
该系列文章是讲解Python
OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~
同时推荐作者的C++图像系列知识:
[数字图像处理] 一.MFC详解显示BMP格式图片
[数字图像处理] 二.MFC单文档分割窗口显示图片
[数字图像处理] 三.MFC实现图像灰度、采样和量化功能详解
[数字图像处理] 四.MFC对话框绘制灰度直方图
[数字图像处理] 五.MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理详解
[数字图像处理] 六.MFC空间几何变换之图像平移、镜像、旋转、缩放详解
[数字图像处理] 七.MFC图像增强之图像普通平滑、高斯平滑、Laplacian、Sobel、Prewitt锐化详解
前文参考:
[Python图像处理] 一.图像处理基础知识及OpenCV入门函数
[Python图像处理] 二.OpenCV+Numpy库读取与修改像素
[Python图像处理] 三.获取图像属性、兴趣ROI区域及通道处理
[Python图像处理] 四.图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波
[Python图像处理] 五.图像融合、加法运算及图像类型转换
[Python图像处理] 六.图像缩放、图像旋转、图像翻转与图像平移
[Python图像处理] 七.图像阈值化处理及算法对比
[Python图像处理] 八.图像腐蚀与图像膨胀
[Python图像处理] 九.形态学之图像开运算、闭运算、梯度运算
[Python图像处理] 十.形态学之图像顶帽运算和黑帽运算
[Python图像处理] 十一.灰度直方图概念及OpenCV绘制直方图
[Python图像处理] 十二.图像几何变换之图像仿射变换、图像透视变换和图像校正
[Python图像处理] 十三.基于灰度三维图的图像顶帽运算和黑帽运算
[Python图像处理] 十四.基于OpenCV和像素处理的图像灰度化处理
前一篇文章讲解了图像灰度化处理的知识,结合OpenCV调用cv2.cvtColor()函数实现图像灰度操作,使用像素处理方法对图像进行灰度化处理。本文主要讲解灰度线性变换,基础性知识希望对您有所帮助。
1.图像灰度上移变换:DB=DA+50
2.图像对比度增强变换:DB=DA*1.5
3.图像对比度减弱变换:DB=DA*0.8
4.图像灰度反色变换:DB=255-DA
PS:文章参考自己以前系列图像处理文章及OpenCV库函数,同时参考如下文献:
杨秀璋等. 基于苗族服饰的图像锐化和边缘提取技术研究[J]. 现代计算机,2018(10).
《数字图像处理》(第3版),冈萨雷斯著,阮秋琦译,电子工业出版社,2013年.
《数字图像处理学》(第3版),阮秋琦,电子工业出版社,2008年,北京.
《OpenCV3编程入门》,毛星云,冷雪飞,电子工业出版社,2015.
[数字图像处理] 五.MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理详解
<>一.图像灰度线性变换原理
图像的灰度线性变换是通过建立灰度映射来调整原始图像的灰度,从而改善图像的质量,凸显图像的细节,提高图像的对比度。灰度线性变换的计算公式如下所示:
该公式中DB表示灰度线性变换后的灰度值,DA表示变换前输入图像的灰度值,α和b为线性变换方程f(D)的参数,分别表示斜率和截距。
* 当α=1,b=0时,保持原始图像
* 当α=1,b!=0时,图像所有的灰度值上移或下移
* 当α=-1,b=255时,原始图像的灰度值反转
* 当α>1时,输出图像的对比度增强
* 当0
* 当α<0时,原始图像暗区域变亮,亮区域变暗,图像求补
如图所示,显示了图像的灰度线性变换对应的效果图。
<>二.图像灰度上移变换
该算法将实现图像灰度值的上移,从而提升图像的亮度,其实现代码如下所示。由于图像的灰度值位于0至255区间之内,所以需要对灰度值进行溢出判断。
# -*- coding: utf-8 -*- import cv2 import numpy as np import matplotlib.pyplot
as plt #读取原始图像 img = cv2.imread('miao.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 = 255 else: 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()
其输出结果如下图所示,图像的所有灰度值上移50,图像变得更白了。注意,纯黑色对应的灰度值为0,纯白色对应的灰度值为255。
<>三.图像对比度增强变换
该算法将增强图像的对比度,Python实现代码如下所示:
# -*- coding: utf-8 -*- import cv2 import numpy as np import matplotlib.pyplot
as plt #读取原始图像 img = cv2.imread('miao.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 = 255 else: gray = int(grayImage[i,j]*1.5) result[i,j] = np.
uint8(gray) #显示图像 cv2.imshow("Gray Image", grayImage) cv2.imshow("Result",
result)
其输出结果如下图所示,图像的所有灰度值增强1.5倍。
<>四.图像对比度减弱变换
该算法将减弱图像的对比度,Python实现代码如下所示:
# -*- coding: utf-8 -*- import cv2 import numpy as np import matplotlib.pyplot
as plt #读取原始图像 img = cv2.imread('miao.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()
其输出结果如下图所示,图像的所有灰度值减弱,图像变得更暗。
<>五.图像灰度反色变换
反色变换又称为线性灰度求补变换,它是对原图像的像素值进行反转,即黑色变为白色,白色变为黑色的过程。其Python实现代码如下所示:
# -*- coding: utf-8 -*- import cv2 import numpy as np import matplotlib.pyplot
as plt #读取原始图像 img = cv2.imread('miao.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()
其输出结果如下图所示,图像处理前后的灰度值是互补的。
图像灰度反色变换在医学图像处理中有一定的应用,如下图所示:
希望文章对大家有所帮助,如果有错误或不足之处,还请海涵。最近连续奔波考博,经历的事情太多,有喜有悲,需要改变自己好好对女神,也希望读者与我一起加油。
(By:Eastmount 2019-03-28 深夜12点 https://blog.csdn.net/Eastmount/)
python灰度图片格式_[Python图像处理] 十五.图像的灰度线性变换相关推荐
- [Python图像处理] 十五.图像的灰度线性变换
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- [Python图像处理] 十六.图像的灰度非线性变换之对数变换、伽马变换
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- python读取图片属性_[Python图像处理]三.获取图像属性及通道处理
获取图像属性 1: 形状-shape: 通过shape关键字获取图像的形状,返回包含行数.列数.通道数的元祖.其中灰度图像返回行数和列数,彩色图像返回行数.列数和通道数 importcv2 img= ...
- python下载图片脚本_[python]非常小的下载图片脚本(非通用)
说在最前面:这不是一个十分通用的下载图片脚本,只是根据我的一个小问题,为了减少我的重复性工作写的脚本. 问题 起因:我的这篇博文什么是真正的程序员浏览量超过了4000+. 问题来了:里面的图片我都是用 ...
- python降低图片分辨率_使用numpy快速降低图像分辨率的Python代码
我首先要说的是,你的"只装箱"方式似乎很不寻常,我想这正是@ljetibo在评论中所指的.在"优化"讨论之后,我将回到这个话题.在 首先,您可以通过去掉对np. ...
- python实现图片格式转换_干货必看 | Python实现图片格式转化
今天教大家一个实用的小技巧,用Python实现图片格式转化,即将PDF格式转化成PNG格式. 整体代码: import fitz ''' #将PDF转化为图片 pdfPath pdf文件的路径 img ...
- 《OpenCv视觉之眼》Python图像处理十 :Opencv图像形态学处理之开运算、闭运算和梯度运算原理及方法
本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...
- python图片保存jpg、show变成bmp_Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中...
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中 我就废话不多说了,直接上代码吧! import Image from datetime import datetime impor ...
- 基于Python实现图片格式转换的小程序
基于Python实现图片格式转换的小程序 特点: 批量处理图片 转换常见的4种图片格式 运行窗口 运行窗口-1 选择图片(可批量选择)-2 假设选中4张JEPG格式的图片 格式选择窗口-3 假设选择目 ...
最新文章
- VUE 框架添加全局公共方法 , 保留小数点后两位
- 线程VS进程,多线程VS多进程,并行VS并发,单核cpuVS多核cpu
- LeetCode: 111. Minimum Depth of Binary Tree
- Python将PDF文件转换成PNG的方案
- 交换机端口灯闪烁频率一样_思创易控cetron-新品S2024GE 24口全千兆非网管交换机即将上市!...
- 网页小图标Favicon
- 嵌入式码农的10年Bug调试经验,值得一看
- 《训练指南》——8.5
- 关于施加在 div 标签上的 ngTemplateOutlet 指令让 div class 丢失的问题调试
- 爬虫中 Selenium-Requets-模拟登陆cookie-代理proxy 的简单总结
- gplv3协议可以商用吗_协议离婚以后,可以变更原离婚协议的内容吗?
- Element-UI + Vue.js + SpringBoot 实现前后端分离入门项目
- 关于c# 静态构造函数的说明
- 【Qt开发】Qt中显示图像的两种方法对比
- 【背包问题】基于matlab模拟退火算法求解背包问题【含Matlab源码 108期】
- vue中实现图片的懒加载
- 清华北大领跑亚洲,泰晤士高等教育2020世界大学排名发布!
- IOT跨平台组件设计方案
- 计蒜客python答案Top50
- 【前端标签-audio】网页播放一个音频和多个音频
热门文章
- 使用栈将十进制数转为八进制数
- 好久不见了,天堂之上,愿你安好
- SpringMVC拦截器HandlerInterceptor拦截后返回数据或视图View
- 一文讲清大屏适配(大到四个屏幕也不怕)
- 【引力科技播】谷歌共享单车每周丢失250辆,微软中国工程师说漏嘴
- JavaScript机器学习的图形可视化和矩阵库
- ../../../assetsets/image/***.png in ./node_modules/cache-loader/dist/cjs.js解决方法(重新手写引入)
- 为什么要搞代码评审?
- Integer类中的valueOf方法
- [Python]mini-Web框架