网站建设鞍山,wordpress会员微信支付宝,对接 网站后台,免费推广渠道有哪些目录一些基本的灰度变换函数图像反转对数变换一些基本的灰度变换函数
如下图显示了在图像处理中频繁使用的3类基本函数#xff1a;
线性#xff08;反转和恒等变换#xff09;函数对数#xff08;对数和反对数变换#xff09;函数幂律#xff08;nnn次幂和nnn次根变换
线性反转和恒等变换函数对数对数和反对数变换函数幂律nnn次幂和nnn次根变换函数
# 灰度变换函数为了图像好看归一化后再乘于255缩放到相同的数值范围
x np.arange(0, 256, 1)
x1 x 1equal normalize(x) * 255
revers (1 - normalize(x)) * 255
log normalize(np.log(x1)) * 255
n_sqrt normalize(np.power(x, 1/3)) * 255
n_power normalize(np.power(normalize(x), 3)) * 255
log_1 normalize(np.exp(log)) * 255plt.figure(figsize(6, 6))
plt.plot(x, equal, labelequal)
plt.plot(x, revers, labelreversed)
plt.plot(x, log, labellog)
plt.plot(x, n_sqrt, labeln sqrt root)
plt.plot(x, n_power, labeln power)
plt.plot(x, log_1, labelexp)plt.ylim([0, 256])
plt.xlim([0, 256])
plt.legend(locupper left)
plt.show()图像反转
sL−1−r(3.3)s L-1 -r \tag{3.3}sL−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, cmapgray, vmin0, vmax255), plt.title(Original)
plt.subplot(1, 2, 2), plt.imshow(img_reversed, cmapgray, vmin0, vmax255), plt.title(Reversed)
plt.tight_layout()
plt.show()对数变换
sc∗log(1r)(3.4)s c*log(1r) \tag{3.4}sc∗log(1r)(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, cmapgray, vmin0, vmax255), plt.title(Original), plt.xticks([]), plt.yticks([])
plt.subplot(1, 3, 2), plt.imshow(amp, cmapgray, vmin0, vmax255), plt.title(FFT result without log), plt.xticks([]), plt.yticks([])
plt.subplot(1, 3, 3), plt.imshow(amp_log, cmapgray, vmin0, vmax255), plt.title(FFT result with Long), plt.xticks([]), plt.yticks([])
plt.tight_layout()
plt.show()