1. 基本原理
对数变换,属于非线性变换,变换关系如下(举例):
表达式形式如下:
我们通过二次导数可知,随着输入 f 的增大, 越来越小,即 变得越来越平缓,其图像含义是处于前段的像素值宽度边框,越往后越来越窄,即图片整体的亮度提升,越暗的提升越明显。
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()
输出结果如下:
通过观察直方图我们发现,处理后的图像的像素值分布右移,对比度变化,图像变得更加更亮。
网友评论