一、灰度化處理
在進行圖像銳化前,一般會對原始彩色圖像進行灰度化處理。灰度化處理可以將圖像從RGB轉換為單通道的灰度圖像,這樣的處理方便了後續處理的計算,同時也有助於提高處理的速度。
圖像灰度化處理的一般步驟為:
gray_image = 0.299 * r_channel + 0.587 * g_channel + 0.114 * b_channel
其中,r_channel、g_channel和b_channel分別代表原始圖像的紅、綠、藍通道,0.299、0.587、0.114為權重係數,通過加權求和將三個通道合併成一個單通道的灰度圖像gray_image。
通常,我們也可以採用平均值法或最大值法等對原始圖像進行灰度化處理。如下:
gray_image = (r_channel + g_channel + b_channel)/3 gray_image = max(r_channel, g_channel, b_channel)
二、圖像銳化的核心技術——卷積運算
卷積是圖像銳化的核心技術。卷積運算是指通過滑動一個卷積核(core)在圖像上進行一系列計算,從而得到一幅新的圖像。卷積核一般是由一組數字構成的方陣,這些數字可以自定。
具體地,卷積運算可以通過以下步驟實現:
- 選取一幅原始圖像和一個卷積核
- 將卷積核的中心與原始圖像上的一個像素點對齊
- 逐個像素地執行卷積操作,在每個像素上計算卷積核和原始圖像重合區域內所有像素點的乘積之和
- 將計算結果填到同一位置的輸出圖像中,並將卷積核向右移動一個像素點,重複上述操作,直到卷積核覆蓋完整個原始圖像
- 得到一幅新的圖像
卷積運算的代碼示例:
import numpy as np def convolve(img, k): kernel_size = k.shape[0] pad_size = kernel_size // 2 h, w = img.shape img = np.pad(img, ((pad_size,pad_size),(pad_size,pad_size)), mode='edge') out = np.zeros(img.shape) for i in range(pad_size, h + pad_size): for j in range(pad_size, w + pad_size): out[i,j] = np.sum(img[i-pad_size:i+pad_size+1, j-pad_size:j+pad_size+1] * k) out = out[pad_size:h+pad_size, pad_size:w+pad_size] return out
三、圖像銳化的常用卷積核
不同的卷積核對應著不同的圖像銳化效果。以下是一些常用的卷積核:
1.拉普拉斯卷積核
拉普拉斯卷積是一種常用的邊緣檢測和圖像銳化卷積,並有多種不同的形式。在對圖像進行銳化處理時,拉普拉斯卷積核可以突顯出圖像中的細節和邊緣。
拉普拉斯卷積核的代碼示例:
k = np.array([[0, -1, 0], [-1, 4, -1], [0, -1, 0]])
2.增強型的拉普拉斯卷積核
與傳統的拉普拉斯卷積核相比,這個卷積核可以更好地突顯出圖像的邊緣和細節更突出。
增強型的拉普拉斯卷積核的代碼示例:
k = np.array([[1, 1, 1], [1, -8, 1], [1, 1, 1]])
3.銳化卷積核
銳化卷積核可以對圖像進行銳化處理,使得圖像的邊緣更加清晰。
銳化卷積核的代碼示例:
k = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]])
四、效果演示
下面是一些使用不同的卷積核對原始圖像進行銳化處理的示例:
1. 原始圖像
2.使用拉普拉斯卷積核
3.使用增強型的拉普拉斯卷積核
4.使用銳化卷積核
原創文章,作者:ZLPJG,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/351615.html