数字图像处理入门

[图像增强][灰度变换]3. 对数非线性变换

2021-11-07  本文已影响0人  砥砺前行的人

1. 基本原理

对数变换,属于非线性变换,变换关系如下(举例):


表达式形式如下:
f(x) = c * log(1 + f) \\ f^{'}(x) = \frac {c} {ln2(1+f)} \\ f^{''}(x) = -\frac {c} {ln2(1+f)^2}

我们通过二次导数可知,随着输入 f 的增大,f^{''}(x) 越来越小,即 f(x) 变得越来越平缓,其图像含义是处于前段的像素值宽度边框,越往后越来越窄,即图片整体的亮度提升,越暗的提升越明显。

2. 使用场景

可用于提升图片亮度。

3. 代码示例

考虑如下灰度图像:


代码如下:

import cv2 as cv
import numpy as np
from math import *
import matplotlib.pyplot as plt


# 按灰度读取一张图片
img = cv.imread("cell.png",cv.IMREAD_GRAYSCALE)
dst = (50 * np.log(1 + img)).astype('uint8')

plt.figure()
plt.subplot(2,2,1)
plt.imshow(img, cmap='gray')
plt.subplot(2,2,2)
plt.imshow(dst, cmap='gray')
plt.subplot(2,2,3)
plt.hist(img.ravel(), 256, [0, 256])
plt.subplot(2,2,4)
plt.hist(dst.ravel(), 256, [0, 256])
plt.show()

输出结果如下:


通过观察直方图我们发现,处理后的图像的像素值分布右移,对比度变化,图像变得更加更亮。

上一篇下一篇

猜你喜欢

热点阅读