基本灰度变换

"""导入需要用的python库"""
import numpy as np
from matplotlib import pyplot as plt
from PIL import Image
from scipy import fft
plt.rcParams['font.sans-serif'] = ['FangSong']  # 设置字体以便正确显示中文
img = np.asarray(Image.open('la.tif'))          # 加载图片,并将它转换为numpy的数组

1、图像反转

公式:s=L-1-r 。

r和s分别代表图像处理前后的像素值,L-1为图像的最大灰度级。

'''图像反转'''
# 公式实现
img2 = np.array(255) - img
# 显示图像
plt.subplot(121)
plt.title('原始图像')
plt.imshow(img, cmap='gray')
plt.subplot(122)
plt.title('图像反转')
plt.imshow(img2, cmap='gray')
plt.show()

2、对数变换

公式:s = c log(1+r)                       , c为常数。

该变换将输入中范围较窄的低灰度值映射为输出中较宽范围的灰度值。

'''对数变换'''
img_fft = fft.fftshift(fft.fft2(img))               # 将蜡笔小新图像做傅里叶变换
img_fft2 = np.log((np.array(1.0)+abs(img_fft)))     # 对数变换公式实现
# 显示图像
plt.subplot(121)
plt.title('原始频域图像')
plt.imshow(abs(img_fft), cmap='gray')
plt.subplot(122)
plt.title('对数变换')
plt.imshow(img_fft2, cmap='gray')
plt.show()

 3、幂律(伽马变换)

公式: s=c(r+\varepsilon )^{\gamma }

其中,c和\gamma为正常数。\varepsilon是偏移量,即输入为0时的一个可度量输出(0的次幂永远是0)。

与对数变换类似,部分\gamma值得幂律曲线将较窄范围的暗色输入值映射为较宽范围的输出值。可以调图像对比度。

'''幂律(伽马变换)'''
img3 = (img/np.array(255))**0.5*255
img4 = (img/np.array(255))**1.5*255
img5 = (img/np.array(255))**3.0*255     # 图像灰度范围[0,255],幂次运算后灰度值会超过255,将其先归一化
# 显示图像
plt.subplot(221)
plt.title('原始图像')
plt.imshow(abs(img), cmap='gray')
plt.subplot(222)
plt.title('伽马变换,y=0.5')
plt.imshow(img3, cmap='gray')
plt.subplot(223)
plt.title('伽马变换,y=1.5')
plt.imshow(img4, cmap='gray')
plt.subplot(224)
plt.title('伽马变换,y=3.0')
plt.imshow(img5, cmap='gray')
plt.show()

 ​​​​​​​

4、分段线性变换函数

'''分段线性变换函数'''
r1 = 100
r2 = 150
s1 = 50
s2 = 250
m1 = (img < r1)
m2 = (img <= r2) & (img >= r1)
m3 = (img > r2)
img6 = (s1/r1*img)*m1+((s2-s1)/(r2-r1)*(img-r1)+s1)*m2+((255-s2)/(255-r2)*(img-r2)+s2)*m3
# 显示图像
plt.subplot(121)
plt.title('原始图像')
plt.imshow(abs(img), cmap='gray')
plt.subplot(122)
plt.title('分段线性变换函数')
plt.imshow(img6, cmap='gray')
plt.show()

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值