一文講懂圖像處理中的低通、高通、帶阻和帶通濾波器
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
空間域和頻域?yàn)V波器通常分為四種類型的濾波器——低通、高通、帶阻和帶通濾波器。在本文中,我們?yōu)槊恳环N濾波器提供了注釋、代碼示例和圖像輸出。

低通濾波器:只允許通過低頻細(xì)節(jié),衰減高頻細(xì)節(jié)。例如:平滑濾波器。
高通濾波器:只允許通過高頻細(xì)節(jié),衰減低頻細(xì)節(jié)。例如:銳化蒙版濾波器。
帶阻濾波器:衰減一定頻率范圍內(nèi)的信號(hào)。允許低于某個(gè)閾值或高于另一個(gè)閾值的頻率通過。
帶通濾波器:只允許特定頻帶內(nèi)的信號(hào)通過,允許高于低閾值和低于高個(gè)閾值的頻率通過。
我們可以將不同濾波器用如下的公式來表示

其中δ(x, y)是單位脈沖核
Zone板是用于測(cè)試過濾器特性的一種測(cè)試板,有很多中版本。本文我們使用如下方程生成我們的要用的Zone板。

其中 x,y 是遞增步長(zhǎng)0.0275,取值范圍在[-8.2, 8.2]的一組數(shù),最終形成一個(gè) 597x597 的圖像,樣子如下所示

具體的代碼如下:
def zone(x, y):return 0.5 * (1 + math.cos(x * x + y * y))SIZE = 597image = np.zeros((SIZE, SIZE))start = -8.2end = 8.2step = 0.0275def dist_center(y, x):global SIZEcenter = SIZE / 2return math.sqrt( (x - center)**2 + (y - center)**2)for y in range(0, SIZE):for x in range(0, SIZE):if dist_center(y, x) > 300:continuey_val = start + y * stepx_val = start + x * stepimage[y, x] = zone(x_val, y_val)
接下來我們將通過代碼展示如何使用各種濾波器,以及展示每個(gè)濾波器對(duì)Zone板的處理結(jié)果。
低通濾波器
kernel_size = 15lowpass_kernel_gaussian = gkern(kernel_size)lowpass_kernel_gaussian = lowpass_kernel_gaussian / lowpass_kernel_gaussian.sum()lowpass_kernel_box = np.ones((kernel_size, kernel_size))lowpass_kernel_box = lowpass_kernel_box / (kernel_size * kernel_size)lowpass_image_gaussian = cv2.filter2D(image, -1, lowpass_kernel_gaussian)lowpass_image_box = cv2.filter2D(image, -1, lowpass_kernel_box)

高通濾波器
在空間域中,可以通過從圖像本身中減去低通濾波圖像來獲得高通濾波圖像(如非銳化掩模)
highpass_image_gaussian = image - lowpass_image_gaussianhighpass_image_gaussian = np.absolute(highpass_image_gaussian)highpass_image_box = image - lowpass_image_boxhighpass_image_box = np.absolute(highpass_image_box)

帶阻濾波器
在空間域中,可以通過將低通濾波與高通濾波圖像(在不同閾值下)相加來獲得帶阻濾波圖像。
bandreject_image = lowpass_image_gaussian + highpass_image_box
帶通濾波器
在空間域中,可以通過從圖像本身中減去帶阻濾波圖像來獲得帶通濾波圖像。
bandpass_image = image - bandreject_imagebandpass_image = np.absolute(bandpass_image)

最后,各位小伙伴可以比較一下不同濾波器對(duì)同一圖像的處理結(jié)果哦。仔細(xì)理解一下低通、高通、帶阻、帶通的含義。
交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請(qǐng)按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~
