python将图像转化为灰度图像,python灰度图转换成二值图像
本文将详细介绍图像灰度的线性变换,包括灰度提升、对比度增强、对比度降低和灰度逆变换。本文中的示例代码解释的很详细,有需要的可以参考一下。
目录
一、灰度的线性变换二。图像灰度上移变换。图像对比度增强变换。图像对比度的缩小变换v .图像灰度的逆变换VI。摘要
一.灰度线性变换
图像灰度的线性变换是通过建立灰度映射来调整原始图像的灰度,从而提高图像质量,突出图像细节,提高图像对比度。灰度变换的计算公式如(12-1)所示:
在这个公式中,DB代表线性变换后的灰度值,DA代表变换前输入图像的灰度值,和B是线性变换方程f(D)的参数,分别代表斜率和截距[1-4]。
当=1,b=0时,保持原图像当=1,B!当=0时,图像的所有灰度值向上或向下移动。当=-1,b=255时,原图像灰度值反转。当1时,输出图像的对比度增强。当 1时,输出图像的对比度降低。0时,原图像的暗区变亮,亮区变暗。图像补偿如图12-1所示,是图像灰度线性变换对应的效果图。
二.图像灰度上移变换
该算法将上移图像的灰度值,从而提高图像的亮度。
DB=DA 50
具体实现代码如下所示。因为图像的灰度值位于0到255的范围内,所以需要判断灰度值的溢出。
# -*-编码: utf-8 -*-
# By:伊斯特蒙特
导入cv2
将numpy作为np导入
将matplotlib.pyplot作为plt导入
#阅读原文图片
img=cv2.imread(luo.png )
#图像灰度转换
grayImage=cv2.cvtColor(img,cv2。COLOR_BGR2GRAY)
#获取图像的高度和宽度
height=grayImage.shape[0]
width=grayImage.shape[1]
#创建图像
result=np.zeros((高度,宽度),np.uint8)
#图像灰度上转换DB=DA 50
对于在范围(高度):的I
对于范围(宽度):内的j
if (int(grayImage[i,j] 50) 255):
灰色=255
else:
gray=int(grayImage[i,j] 50)
结果[i,j]=np.uint8(灰色)
#显示图像
cv2.imshow(灰度图像,灰度图像)
cv2.imshow(Result ,结果)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果如图12-2所示。图像的所有灰度值上移50,图像变得更白。注意纯黑的灰度值是0,纯白的灰度值是255。
三.图像对比度增强变换
该算法将增强图像的对比度,Python实现代码如下所示。
DB=DA1.5
# -*-编码: utf-8 -*-
# By:伊斯特蒙特
导入cv2
将numpy作为np导入
将matplotlib.pyplot作为plt导入
#阅读原文图片
img=cv2.imread(luo.png )
#图像灰度转换
grayImage=cv2.cvtColor(img,cv2。COLOR_BGR2GRAY)
#获取图像的高度和宽度
height=grayImage.shape[0]
width=grayImage.shape[1]
#创建图像
结果=np.zero
s((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)
其输出结果如图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所示:
六.总结
本文主要讲解图像灰度线性变换,包括图像灰度上移、图像对比度增强变换、图像对比度减弱变换和图像灰度反色变换。希望大家一定要自己实现文章中的代码,更好地提升编程能力。
到此这篇关于Python图像运算之图像灰度线性变换详解的文章就介绍到这了,更多相关Python图像灰度线性变换内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。