跟我学Python图像处理丨何为图像的灰度非线性变换
摘要:本文主要讲解灰度线性变换,基础性知识希望对您有所帮助。
本文分享自华为云社区《[Python图像处理] 十六.图像的灰度非线性变换之对数变换、伽马变换》,作者:eastmount 。
本篇文章主要讲解非线性变换,使用自定义方法对图像进行灰度化处理,包括对数变换和伽马变换。
一.图像灰度非线性变换
图像的灰度非线性变换主要包括对数变换、幂次变换、指数变换、分段函数变换,通过非线性关系对图像进行灰度处理,下面主要讲解三种常见类型的灰度非线性变换。
原始图像的灰度值按照DB=DA×DA/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×DA/255 for i in range(height): for j in range(width): gray = int(grayImage[i,j])*int(grayImage[i,j]) / 255 result[i,j] = np.uint8(gray) #显示图像 cv2.imshow("Gray Image", grayImage) cv2.imshow("Result", result) #等待显示 cv2.waitKey(0) cv2.destroyAllWindows()