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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python实现同态滤波

發(fā)布時(shí)間:2023/12/20 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实现同态滤波 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

同態(tài)濾波

對(duì)于一幅由物理過(guò)程產(chǎn)生的圖像f(x,y),可以表示為照射分量i(x,y)和反射分量r(x,y)的乘積。0<i(x,y)<∞,0<r(x,y)<1。i(x,y)描述景物的照明,變化緩慢,處于低頻成分。r(x,y)描述景物的細(xì)節(jié),變化較快,處于高頻成分。

因?yàn)樵撔再|(zhì)是乘性的,所以不能直接使用傅里葉變換對(duì)i(x,y)和r(x,y)進(jìn)行控制,因此可以先對(duì)f(x,y)取對(duì)數(shù),分離i(x,y)和r(x,y)。令z(x,y) = ln f(x,y) = ln i(x,y) + ln r(x,y)。在這個(gè)過(guò)程中,由于f(x,y)的取值范圍為[0, L-1],為了避免出現(xiàn)ln(0)的情況,故采用ln ( f(x,y) + 1 ) 來(lái)計(jì)算。

然后取傅里葉變換,得到 Z(u,v) = Fi(u,v) + Fr(u,v)。

然后使用一個(gè)濾波器,對(duì)Z(u,v)進(jìn)行濾波,有 S(u,v) = H(u,v) Z(u,v) = H(u,v)Fi(u,v) + H(u,v)Fr(u,v)。

濾波后,進(jìn)行反傅里葉變換,有 s(x, y) = IDFT( S(u,v) )。

最后,反對(duì)數(shù)(取指數(shù)),得到最后處理后的圖像。g(x,y) = exp^(s(x,y)) = i0(x,y)+r0(x,y)。由于我們之前使用ln ( f(x,y)+1),因此此處使用exp^(s(x,y)) - 1。 i0(x,y)和r0(x,y)分別是處理后圖像的照射分量和入射分量。

實(shí)現(xiàn)代碼

import os import cv2 from PIL import Image import numpy as npdef homomorphic_filter(src, d0=10, r1=0.5, rh=2, c=4, h=2.0, l=0.5):gray = src.copy()if len(src.shape) > 2:gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)gray = np.float64(gray) rows, cols = gray.shapegray_fft = np.fft.fft2(gray)gray_fftshift = np.fft.fftshift(gray_fft)dst_fftshift = np.zeros_like(gray_fftshift)M, N = np.meshgrid(np.arange(-cols // 2, cols // 2), np.arange(-rows//2, rows//2))D = np.sqrt(M ** 2 + N ** 2)Z = (rh - r1) * (1 - np.exp(-c * (D ** 2 / d0 ** 2))) + r1dst_fftshift = Z * gray_fftshiftdst_fftshift = (h - l) * dst_fftshift + ldst_ifftshift = np.fft.ifftshift(dst_fftshift)dst_ifft = np.fft.ifft2(dst_ifftshift)dst = np.real(dst_ifft)dst = np.uint8(np.clip(dst, 0, 255))return dstpath = "img.bmp" if os.path.isfile(path):print("path {} is existence;".format(path))img = Image.open(path)Img = img.convert('L')img = np.array(img)print(img, img.shape) img_new = homomorphic_filter(img) print("new img shape is {}".format(img_new.shape)) cv2.imwrite("2.png", img_new)

總結(jié)

以上是生活随笔為你收集整理的python实现同态滤波的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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