首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >对数变换

对数变换

作者头像
裴来凡
发布2022-05-28 16:44:53
发布2022-05-28 16:44:53
9910
举报
代码语言:javascript
复制
import cv2
import copy
import math
import matplotlib.pyplot as plt
o=cv2.imread('C:/Users/xpp/Desktop/Lena.png',cv2.IMREAD_GRAYSCALE)#原始图像
cv2.imshow("original",o)
logc=copy.deepcopy(o)
rows=o.shape[0]
cols=o.shape[1]
for i in range(rows):#对数变换
    for j in range(cols):
        logc[i][j]=3*math.log(1+logc[i][j])
cv2.imshow("result",logc)        
cv2.waitKey()
cv2.destroyAllWindows()

算法:对数变换是非线性变换。对数变换应用在增强图像的暗部细节,从而用来扩展被压缩的高值图像中的较暗像素。对数变换实现了扩展低灰度值而压缩高灰度值的效果,被广泛地应用于频谱图像的显示中。一个典型的应用是傅立叶频谱,其动态范围可能宽达0~106直接显示频谱时,图像显示设备的动态范围往往不能满足要求,从而丢失大量的暗部细节;而在使用对数变换之后,图像的动态范围被合理地非线性压缩,从而可以清晰地显示。

对数变换的一般形式为:

s=T(r)=c*log(1+r)

其中,r为原始图像灰度值,c为尺度比较常数,s为对数变换后的目标灰度值。

例子:

由于对数曲线在像素值较低的区域斜率大,在像素值较高的区域斜率较小,所以图像经过对数变换后,较暗区域的对比度将有所提升。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档