當前使用opencv版本: 4.0.1
相比於對整幅影象取乙個固定的閾值,由於光照不均勻等原因,跟一般的方法是對一幅影象中的每個畫素點計算閾值,即可變區域性閾值。
演算法表示如下:
m (k
+1)=
1n∑i
=k+2
−nk+
1zi(
1.1)
m(k+1)=\frac\sum^_z_(1.1)
m(k+1)
=n1
i=k+
2−n∑
k+1
zi(
1.1)
其中, zk+
1z_zk+1
表示在掃瞄序列中第k+1
k+1k+
1步遇到的點的灰度值,m(k
)m(k)
m(k)
為輸入影象的第k
kk個點的畫素值,n
nn表示用於計算平均的點的數量。
根據(1.1)有下式:
m (k
)=1n
∑i=k
+1−n
kzi(
1.2)
m(k)=\frac\sum^_z_(1.2)
m(k)=n
1i=
k+1−
n∑k
zi(
1.2)
根據(1.1)、(1.2)不難得出下式子:
m (k
+1)=
1n∑i
=k+2
−nk+
1zi=
m(k)
+1n(
zk+1
−zk+
1−n)
(1.3
)m(k+1)=\frac\sum^_z_=m(k)+\frac(z_-z_)(1.3)
m(k+1)
=n1
i=k+
2−n∑
k+1
zi=
m(k)
+n1
(zk+
1−z
k+1−
n)(
1.3)
接下來就根據每個點的閾值進行二值化操作。
注:我們僅僅在掃瞄的點的數量大於n時應用式(1.3),其他情況則將zk+
1−nz_
zk+1−n
視為0,即相當於在影象的邊界填充了n-1個0。
以下是實現結果,左邊是原圖,右邊是結果。
}1.岡薩雷斯. 數字影象處理[m]. 北京: 電子工業出版社, 2005.
OpenCV 閾值處理 二 自適應閾值
因此在同一副影象上的不同區域採用的是不同的閾值,從而使我們能在亮度不同的情況下得到更好的結果。自適應閾值函式 dst cv.adaptivethreshold src,maxvalue,adaptivemethod,thresholdtype,blocksize,c dst 引數 src 8位單通道...
OpenCV自適應閾值處理
區域性自適應閾值則是根據畫素的鄰域塊的畫素值分布來確定該畫素位置上的二值化閾值。這樣做的好處在於每個畫素位置處的二值化閾值不是固定不變的,而是由其周圍鄰域畫素的分布來決定的。亮度較高的影象區域的二值化閾值通常會較高,而亮度較低的影象區域的二值化閾值則會相適應地變小。不同亮度 對比度 紋理的區域性影象...
opencv學習記錄之閾值處理
閾值處理是指將影象內高於一定值或者低於一定值的畫素點進行處理 函式形式為 retval dst cv2.thresshold src thresh maxval type retval代表返回的閾值 dst代表閾值分割結果影象,與原始影象有相同的大小和型別 src代表要進行分割的影象,可以是多通道的...