矩陣的掩碼操作
根據掩碼矩陣(也稱作核)重新計算影象中每個畫素的值。掩碼矩陣中的值表示近鄰畫素值(包括該畫素自身的值)對新畫素值有多大影響。從數學觀點看,我們用自己設定的權值,對畫素鄰域內的值做了個加權平均。
對影象的每個畫素應用下面的公式:
即:每個畫素 = 該畫素*5 - 相鄰上下左右的畫素的和
原始演算法按照這個公式邊界值是計算不了的,因為會訪問到旁邊不存在的元素,需要將邊界元素設定成 0
那麼,影象矩陣經過這個操作後會發生什麼呢?
假設中間畫素是很亮的話,顯然經過運算會更亮。中間元素亮度低的話,經過運算就會更暗。因此經過這個運算後影象對比度會增強,亮的更亮,暗的更暗
下面的函式就是將原影象和掩碼矩陣進行卷積運算
mat.filter2d(ddepth: number, kernel: mat, anchor?: point2, delta?: number, bordertype?: number): mat
const cv =
require
("opencv4nodejs");
const input = cv.
imread
("../../data/lenna.png");
// 掩碼矩陣
// 必須是單通道浮點型矩陣
const kernel =
newcv.mat([
[0,-
1,0]
,[-1
,5,-
1],[
0,-1
,0]]
, cv.
cv_32fc1);
const output = input.
filter2d
(input.depth, kernel)
;cv.
imshow
("input"
, input)
;cv.
imshow
("output"
, output)
;cv.
waitkey()
;
函式引數解釋
tips:
OpenCV學習筆記 矩陣的掩碼操作
矩陣的掩碼操作很簡單。其思想是 根據掩碼矩陣 也稱作核 重新計算影象中每個畫素的值。掩碼矩陣中的值表示近鄰畫素值 包括該畫素自身的值 對新畫素值有多大影響。從數學觀點看,我們用自己設定的權值,對畫素鄰域內的值做了個加權平均。思考一下影象對比度增強的問題。我們可以對影象的每個畫素應用下面的公式 上面那...
OpenCv矩陣掩碼操作
定義 矩陣的掩碼操作就是重新計算影象中的每個畫素值。應用 常用於影象平滑,邊緣檢測,特徵分析等區域。方法 第一種使用公式,第二種使用filter2d 函式 include include includeusing namespace cv using namespace std int main n...
OpenCV學習之四 矩陣的掩碼操作
矩陣的掩碼操作很簡單。其思想是 根據掩碼矩陣 也稱作核 重新計算影象中每個畫素的值。掩碼矩陣中的值表示近鄰畫素值 包括該畫素自身的值 對新畫素值有多大影響。從數學觀點看,我們用自己設定的權值,對畫素鄰域內的值做了個加權平均。思考一下影象對比度增強的問題。我們可以對影象的每個畫素應用下面的公式 上面那...