第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波2 - 图像反转、对数变换
生活随笔
收集整理的這篇文章主要介紹了
第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波2 - 图像反转、对数变换
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
- 一些基本的灰度變換函數
- 圖像反轉
- 對數變換
一些基本的灰度變換函數
如下圖顯示了在圖像處理中頻繁使用的3類基本函數:
- 線性(反轉和恒等變換)函數
- 對數(對數和反對數變換)函數
- 冪律(nnn次冪和nnn次根變換)函數
圖像反轉
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 - 图像反转、对数变换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 斗鱼大数据的玩法
- 下一篇: 第3章 Python 数字图像处理(DI