日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【OpenCV 例程 300 篇】105. 湍流模糊退化模型

發(fā)布時間:2024/3/12 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【OpenCV 例程 300 篇】105. 湍流模糊退化模型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

專欄地址:『youcans 的 OpenCV 例程 300篇 - 總目錄』

【第 7 章:圖像復(fù)原與重建】
104. 運動模糊退化模型
105. 湍流模糊退化模型


【youcans 的 OpenCV 例程300 篇】105. 湍流模糊退化模型


5.3 模型法估計退化函數(shù)

估計圖像復(fù)原中所用的退化函數(shù),主要有三種方法:觀察法、試驗法和數(shù)學(xué)建模方法。

分析導(dǎo)致退化的原因,根據(jù)基本原理提出退化模型,如湍流導(dǎo)致的模糊、勻速運動導(dǎo)致的模糊,可以基于模型更加準(zhǔn)確地估計退化函數(shù)。

下面以運動模糊和大氣湍流模型為例,采用退化模型對圖像的退化建模。


例程 9.19:湍流模糊退化模型

湍流是自然界中普遍存在的一種復(fù)雜的流動現(xiàn)象。物體通過湍流大氣成像時,受到湍流效應(yīng)的影響,出現(xiàn)光強閃爍、光束方向漂移、光束寬度擴展及接收面上相位的起伏,造成圖像模糊和抖動,甚至扭曲變形。

Hufnagel and Stanley 根據(jù)大氣湍流的物理特性提出一種退化模型:

H(u,v)=e?k(u2+v2)5/6H(u,v) = e^{-k (u^2+v^2)^{5/6}} H(u,v)=e?k(u2+v2)5/6

k 是湍流常數(shù),反映湍流的強烈程度。

# 9.19: 湍流模糊退化模型 (turbulence blur degradation model)def getDegradedImg(image, Huv): # 根據(jù)退化模型生成退化圖像rows, cols = image.shape[:2] # 圖片的高度和寬度# (1) 中心化, centralized 2d array f(x,y) * (-1)^(x+y)mask = np.ones((rows, cols))mask[1::2, ::2] = -1mask[::2, 1::2] = -1imageCen = image * mask# (2) 快速傅里葉變換dftImage = np.zeros((rows, cols, 2), np.float32)dftImage[:, :, 0] = imageCencv2.dft(dftImage, dftImage, cv2.DFT_COMPLEX_OUTPUT) # 快速傅里葉變換 (rows, cols, 2)# (4) 構(gòu)建 頻域濾波器傳遞函數(shù):Filter = np.zeros((rows, cols, 2), np.float32) # (rows, cols, 2)Filter[:, :, 0], Filter[:, :, 1] = Huv, Huv# (5) 在頻率域修改傅里葉變換: 傅里葉變換 點乘 濾波器傳遞函數(shù)dftFilter = dftImage * Filter# (6) 對修正傅里葉變換 進行傅里葉逆變換,并只取實部idft = np.ones((rows, cols), np.float32) # 快速傅里葉變換的尺寸cv2.dft(dftFilter, idft, cv2.DFT_REAL_OUTPUT + cv2.DFT_INVERSE + cv2.DFT_SCALE) # 只取實部# (7) 中心化, centralized 2d array g(x,y) * (-1)^(x+y)mask2 = np.ones(dftImage.shape[:2])mask2[1::2, ::2] = -1mask2[::2, 1::2] = -1idftCen = idft * mask2 # g(x,y) * (-1)^(x+y)# (8) 截取左上角,大小和輸入圖像相等imgDegraded = np.uint8(cv2.normalize(idftCen, None, 0, 255, cv2.NORM_MINMAX)) # 歸一化為 [0,255]# print(image.shape, dftFilter.shape, imgDegraded.shape)return imgDegradeddef turbulenceBlur(img, k=0.001): # 湍流模糊傳遞函數(shù)# H(u,v) = exp(-k(u^2+v^2)^5/6)M, N = img.shape[1], img.shape[0]u, v = np.meshgrid(np.arange(M), np.arange(N))radius = (u - M//2)**2 + (v - N//2)**2kernel = np.exp(-k * np.power(radius, 5/6))return kernel# 讀取原始圖像img = cv2.imread("../images/Fig0525a.tif", 0) # flags=0 讀取為灰度圖像# 生成湍流模糊圖像HBlur1 = turbulenceBlur(img, k=0.001) # 湍流模糊傳遞函數(shù)imgBlur1 = getDegradedImg(img, HBlur1) # 生成湍流模糊圖像HBlur2 = turbulenceBlur(img, k=0.0025)imgBlur2 = getDegradedImg(img, HBlur2)plt.figure(figsize=(9, 6))plt.subplot(131), plt.title("origin"), plt.axis('off'), plt.imshow(img, 'gray')plt.subplot(132), plt.title("turbulence blur(k=0.001)"), plt.axis('off'), plt.imshow(imgBlur1, 'gray')plt.subplot(133), plt.title("turbulence blur(k=0.0025)"), plt.axis('off'), plt.imshow(imgBlur2, 'gray')plt.tight_layout()plt.show()


(本節(jié)完)


版權(quán)聲明:
youcans@xupt 原創(chuàng)作品,轉(zhuǎn)載必須標(biāo)注原文鏈接:(https://blog.csdn.net/youcans/article/details/123027287)
Copyright 2022 youcans, XUPT
Crated:2022-2-1


總結(jié)

以上是生活随笔為你收集整理的【OpenCV 例程 300 篇】105. 湍流模糊退化模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。