本文介绍: 本章介绍:(1)图像线性灰度变换理解线性拉伸灰度动态范围影响。(2)常用的非线性灰度变换方法,如对数变换幂律变换分段线性变换。(3)通过灰度变换调整图像色阶,理解校正图像的色调范围和色彩平衡。

数字图像处理-OpenCV/Python》连载(50)非线性灰度变换

本书京东优惠购书链接https://item.jd.com/14098452.html
本书CSDN独家连载专栏https://blog.csdn.net/youcans/category_12418787.html

在这里插入图片描述

第 7 章 图像的灰度变换

灰度变换按照灰度级的映射函数修改像素的灰度值,从而改变图像灰度的动态范围灰度变换可以使图像的动态范围扩大、图像对比度增强,使图像更清晰、特征更明显。

本章内容概要

7.3 非线性灰度变换

非线性灰度变换是指运用非线性函数调整原始图像的灰度范围。常用方法有对数变换和幂律变换。对数变换与幂律变换的映射关系如图7-4所示

在这里插入图片描述
非线性灰度变换在运算过程中,像素值要按实数来计算计算结果也是实数,要注意图像数据类型转换

7.3.1 对数变换

对数变换是指将输入范围较窄的低灰度级映射范围较宽的灰度级,使较暗区域对比度增强,提升图像的暗部细节

对数变换可以由以下公式描述

d

s

t

=

c

l

o

g

(

1

+

s

r

c

)

dst = c*log(1+src)

dst=clog(1+src)

式中,srcdst分别表示原始图像和变换图像的灰度值;c是比例系数

对数变换实现扩展低灰度级而压缩高灰度级的效果,广泛应用于频谱图像的显示,典型应用是傅里叶频谱的显示

7.3.2 幂律变换

幂律变换也称伽马变换,可以提升暗部细节,对发白(曝光过度)或过暗(曝光不足)的图片进行校正

伽马变换可以由以下公式描述

d

s

t

=

c

s

r

c

γ

,

γ

>

0

dst = c*src^{gamma}, gamma>0

dst=csrcγ,γ>0

式中,srcdst分别表示原始图像和变换图像的灰度值;

γ

gamma

γ是伽马系数;c是比例系数

0

<

γ

<

1

0<gamma<1

0<γ<1时,拉伸了图像的低灰度级,压缩了图像的高灰度级,减弱了图像的对比度;当

γ

gamma

γ>1时,拉伸了图像的高灰度级,压缩了图像的低灰度级,增强了图像的对比度

伽马变换通过非线性变换对人类视觉特性进行补偿,可以最大化地利用灰度级的带宽,很多拍摄、显示和打印设备亮度曲线都符合伽马曲线,因此伽马变换被广泛应用于显示设备的调校,称为伽马校正

例程0704】灰度变换之对数变换

例程为图像灰度变化之对数变换在傅里叶频谱显示中的应用

# 【0704】灰度变换之对数变换
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

if __name__ == '__main__':
    gray = cv.imread("../images/Fig0602.png", flags=0)  # 读取为灰度图像

    fft = np.fft.fft2(gray)  # 傅里叶变换
    fft_shift = np.fft.fftshift(fft)  # 将低频部分移动到图像中心
    amp = np.abs(fft_shift)  # 傅里叶变换的频谱
    ampNorm = np.uint8(cv.normalize(amp, None, 0, 255, cv.NORM_MINMAX))  # 归一化为 [0,255]
    ampLog = np.abs(np.log(1.0 + np.abs(fft_shift)))  # 对数变换, c=1
    ampLogNorm = np.uint8(cv.normalize(ampLog, None, 0, 255, cv.NORM_MINMAX))

    plt.figure(figsize=(9, 3.2))
    plt.subplot(131), plt.title("1. Original"), plt.axis('off')
    plt.imshow(gray, cmap='gray', vmin=0, vmax=255)
    plt.subplot(132), plt.title("2. FFT spectrum"), plt.axis('off')
    plt.imshow(ampNorm, cmap='gray', vmin=0, vmax=255)
    plt.subplot(133), plt.title("3. LogTrans of FFT"), plt.axis('off')
    plt.imshow(ampLogNorm, cmap='gray', vmin=0, vmax=255)
    plt.tight_layout()
    plt.show()

程序说明
(1)运行结果,傅里叶频谱的对数变换如图7-5所示。图7-5(2)所示为图7-5(1)的傅里叶频谱图,图7-5(3)所示为图7-5(2)的对数变换图像。
(2)由于傅里叶频谱的动态范围很宽,图7-5(2)只能显示图像中心一个亮点亮点只有一个像素,其实也看不出来),丢失了大量的暗部细节。
(3)图7-5(3)使用对数变换将图7-5(2)的动态范围进行了非线性压缩,因此清晰地显示了频谱特征

在这里插入图片描述

图7-5 傅里叶频谱的对数变换

版权声明
youcans@xupt 原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/134726151)
Copyright 2023 youcans, XUPT
Crated:2023-12-01

欢迎关注本书CSDN独家连载专栏
数字图像处理-OpenCV/Python》连载: https://blog.csdn.net/youcans/category_12418787.html

原文地址:https://blog.csdn.net/youcans/article/details/134726151

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_27164.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注