失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波2 - 图像反转 对数变换

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波2 - 图像反转 对数变换

时间:2023-03-07 15:37:22

相关推荐

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波2 - 图像反转 对数变换

目录

一些基本的灰度变换函数图像反转对数变换

一些基本的灰度变换函数

如下图显示了在图像处理中频繁使用的3类基本函数:

线性(反转和恒等变换)函数对数(对数和反对数变换)函数幂律(nnn次幂和nnn次根变换)函数

# 灰度变换函数为了图像好看,归一化后再乘于255,缩放到相同的数值范围x = np.arange(0, 256, 1)x1 = x + 1equal = normalize(x) * 255revers = (1 - normalize(x)) * 255log= normalize(np.log(x1)) * 255n_sqrt = normalize(np.power(x, 1/3)) * 255n_power = normalize(np.power(normalize(x), 3)) * 255log_1 = normalize(np.exp(log)) * 255plt.figure(figsize=(6, 6))plt.plot(x, equal, label='equal')plt.plot(x, revers, label='reversed')plt.plot(x, log,label='log')plt.plot(x, n_sqrt, label='n sqrt root')plt.plot(x, n_power, label='n power')plt.plot(x, log_1, label='exp')plt.ylim([0, 256])plt.xlim([0, 256])plt.legend(loc='upper left')plt.show()

图像反转

s=L−1−r(3.3)s = L-1 -r \tag{3.3}s=L−1−r(3.3)

采用这种方式反转图像的灰度级,会得到类似于照片底片的结果。这种类型的处理可用于增强图像暗色区域中的白色或灰色细节,暗色安全阀人尺寸很大时这种增强效果更好

# 图像反转,也可以缩放到[0, 1], 然后再用1减去img_ori = cv2.imread('DIP_Figures/DIP3E_Original_Images_CH03/Fig0304(a)(breast_digital_Xray).tif', 0)img_reversed = 256 - 1 - img_ori # L = 2^8plt.figure(figsize=(18, 15))plt.subplot(1, 2, 1), plt.imshow(img_ori, cmap='gray', vmin=0, vmax=255), plt.title('Original')plt.subplot(1, 2, 2), plt.imshow(img_reversed, cmap='gray', vmin=0, vmax=255), plt.title('Reversed')plt.tight_layout()plt.show()

对数变换

s=c∗log(1+r)(3.4)s= c*log(1+r) \tag{3.4}s=c∗log(1+r)(3.4)

这个变换将输入中范围较窄的低灰度值映射为输出中范围较宽的灰度级。相反,输入中的高灰度值则被映射为输出中范围较窄的灰度级。使用这类变换来扩展图像中的暗像素值,同时压缩高灰度级值。

反对数(指数)变换的功能正好相反。

# 对数变换img_ori = cv2.imread('DIP_Figures/DIP3E_Original_Images_CH03/Fig0305(a)(DFT_no_log).tif', 0)#------------------------傅里叶变换fft = np.fft.fft2(img_ori) fft_shift = np.fft.fftshift(fft) #中心化#------------------------直接显示变换后的频谱amp = np.abs(fft_shift)amp = np.uint8(normalize(amp) * 255)#------------------------对频谱进行对数变换后amp_log = np.abs(np.log(1 + np.abs(fft_shift)))amp_log = np.uint8(normalize(amp_log) * 255)plt.figure(figsize=(16, 6))plt.subplot(1, 3, 1), plt.imshow(img_ori, cmap='gray', vmin=0, vmax=255), plt.title('Original'), plt.xticks([]), plt.yticks([])plt.subplot(1, 3, 2), plt.imshow(amp, cmap='gray', vmin=0, vmax=255), plt.title('FFT result without log'), plt.xticks([]), plt.yticks([])plt.subplot(1, 3, 3), plt.imshow(amp_log, cmap='gray', vmin=0, vmax=255), plt.title('FFT result with Long'), plt.xticks([]), plt.yticks([])plt.tight_layout()plt.show()

如果觉得《第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波2 - 图像反转 对数变换》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。