图像的幂律(伽马)变换的python实现----冈萨雷斯数字图像处理

图像的幂律(伽马)变换:

图像的幂律(伽马)变换是一种常用的图像增强技术,通常用于调整图像的对比度。这种变换通过对图像中每个像素的灰度值进行非线性映射来实现。
幂律变换的数学表达式如下所示:

图像的幂律(伽马)变换的python实现----冈萨雷斯数字图像处理_第1张图片

使用幂律变换时,较小的灰度值将被映射到更小的值,而较大的灰度值则会被映射到更大的值,以拉伸或压缩图像的灰度范围。较大的 γ 值将导致对比度增强,而较小的 γ 值将使对比度减弱。

python代码实现输出如下图所示的结果:
图像的幂律(伽马)变换的python实现----冈萨雷斯数字图像处理_第2张图片

提示:

原图用opencv读入后,分别以小于1的γ值和大于1的γ值对其进行灰度变换。Python中幂律运算可用**运算符表示。实验不同的γ值对图像对比度的不同作用,8次灰度变换完成后,用pyplot同时显示所有结果图。

python代码实现

import cv2
import math
import  sys
import numpy as np
import matplotlib.pyplot as plt
img1=cv2.imread("Fig0308.tif")
img2=cv2.imread("Fig0309.tif")

if img1 is None:
    sys.exit("could not read the image")

if img2 is None:
    sys.exit("could not read the image")

def gammaTranform(c,gamma,image):
    h,w,d = image.shape[0],image.shape[1],image.shape[2]
    new_img = np.zeros((h,w,d),dtype=np.float32)
    for i in range(h):
        for j in range(w):
            new_img[i,j,0] = c*math.pow(image[i, j, 0], gamma)
            new_img[i,j,1] = c*math.pow(image[i, j, 1], gamma)
            new_img[i,j,2] = c*math.pow(image[i, j, 2], gamma)
    cv2.normalize(new_img,new_img,0,255,cv2.NORM_MINMAX)
    new_img = cv2.convertScaleAbs(new_img)

    return new_img

new_img1 = gammaTranform(1,1,img1)
new_img2= gammaTranform(1,0.6,img1)
new_img3= gammaTranform(1,0.4,img1)
new_img4= gammaTranform(1,0.3,img1)
new_img5 = gammaTranform(1,1,img2)
new_img6= gammaTranform(1,2,img2)
new_img7= gammaTranform(1,3,img2)
new_img8= gammaTranform(1,4,img2)

plt.subplot(241),plt.imshow(new_img1),plt.title("new_img1")
plt.subplot(242),plt.imshow(new_img2),plt.title("new_img2")
plt.subplot(243),plt.imshow(new_img3),plt.title("new_img3")
plt.subplot(244),plt.imshow(new_img4),plt.title("new_img4")
plt.subplot(245),plt.imshow(new_img5),plt.title("new_img5")
plt.subplot(246),plt.imshow(new_img6),plt.title("new_img6")
plt.subplot(247),plt.imshow(new_img7),plt.title("new_img7")
plt.subplot(248),plt.imshow(new_img8),plt.title("new_img8")
plt.show()

图像的幂律(伽马)变换的python实现----冈萨雷斯数字图像处理_第3张图片

图像的幂律(伽马)变换的python实现----冈萨雷斯数字图像处理_第4张图片

伽马变换可以很好地拉伸图像的对比度,扩展灰度级。
由图可知,
当图像的整体灰度偏暗时,选择γ<1,可以使图像增亮;
当图像的整体灰度偏亮时,选择γ>1,可以使图像变暗,
提高图像的对比度,凸显细节。

你可能感兴趣的:(图像处理,python,开发语言)