cvthreshold是opencv庫中的乙個函式
作用:函式 cvthreshold 對單通道陣列應用固定閾值操作。該函式的典型應用是對灰度影象進行閾值操作得到二值影象。(cvcmps 也可以達到此目的) 或者是去掉雜訊,例如過濾很小或很大象素值的影象點。本函式支援的對影象取閾值的方法由 threshold_type 確定。
形式:void cvthreshold( const cvarr* src, cvarr* dst, double threshold, double max_value, int threshold_type );
src:原始陣列 (單通道 , 8-bit of 32-bit 浮點數)。dst:輸出陣列,必須與 src 的型別一致,或者為 8-bit。
threshold:閾值
max_value:使用 cv_thresh_binary 和 cv_thresh_binary_inv 的最大值。
本函式支援的對影象取閾值的方法由 threshold_type 確定:
threshold_type=cv_thresh_binary:
dst(x,y) = max_value, if src(x,y)>threshold 0, otherwise.
threshold_type=cv_thresh_binary_inv:
dst(x,y) = 0, if src(x,y)>threshold; dst(x,y) = max_value, otherwise.
threshold_type=cv_thresh_trunc:
dst(x,y) = threshold, if src(x,y)>threshold; dst(x,y) = src(x,y), otherwise.
threshold_type=cv_thresh_tozero:
dst(x,y) = src(x,y), if (x,y)>threshold ; dst(x,y) = 0, otherwise.
threshold_type=cv_thresh_tozero_inv:
dst(x,y) = 0, if src(x,y)>threshold ; dst(x,y) = src(x,y), otherwise.
值得一說的是threshold_type可以使用cv_thresh_otsu型別,這樣該函式就會使用大律法otsu得到的全域性自適應閾值來進行二值化,而引數中的threshold不再起 作用。比如:cvthreshold( dst, dst,300 , 255, cv_thresh_otsu | cv_thresh_binary_inv);這種方法對於灰度直方圖呈現二峰特徵的處理起來效果很好。當然你也可以使用已有的otsu演算法來計算該閾值。如下:
[cpp]view plain
copy
intotsu(
const
iplimage *src_image)
//大津法求閾值
; float
pixel_pro[256]=;
intthreshold = 0;
uchar* data = (uchar*)src_image->imagedata;
//統計每個灰度級中畫素的個數
for(
inti = 0; i < src_image->height; i++)
} cout<<"平均灰度:"
width )<
//計算每個灰度級的畫素數目佔整幅影象的比例
for(
inti = 0; i < 256; i++)
//遍歷灰度級[0,255],尋找合適的threshold
for(
inti = 0; i < 256; i++)
else
//前景部分
} u0 = u0_temp / w0;
u1 = u1_temp / w1;
delta_temp = (float
)(w0 *w1* pow((u0 - u1), 2)) ;
if(delta_temp > delta_max)
} return
threshold;
}
OpenCV二值化方法
cvthreshold是opencv庫中的乙個函式 作用 函式 cvthreshold 對單通道陣列應用固定閾值操作。該函式的典型應用是對灰度影象進行閾值操作得到二值影象。cvcmps 也可以達到此目的 或者是去掉雜訊,例如過濾很小或很大象素值的影象點。本函式支援的對影象取閾值的方法由 thresh...
OpenCV二值化方法
cvthreshold是opencv庫中的乙個函式 作用 函式 cvthreshold 對單通道陣列應用固定閾值操作。該函式的典型應用是對灰度影象進行閾值操作得到二值影象。cvcmps 也可以達到此目的 或者是去掉雜訊,例如過濾很小或很大象素值的影象點。本函式支援的對影象取閾值的方法由 thresh...
OpenCV全域性二值化和區域性二值化原理
thresh otsu最適用於雙波峰。thresh 最適用於單個波峰。它是計算乙個閾值 臨界值 的演算法。先計算影象的灰度直方圖,假設灰度值的均值是130,稱這個均值為m,現在任意選取乙個灰度值t,則可以將直方圖分成前後倆部分,稱這倆部分分別為a和b,這倆部分各自的平均值成為ma和mb。a部分裡的畫...