c语言实现灰度图像阈值分割,灰度图像--图像分割 阈值处理之平均阈值
學(xué)習(xí)DIP第52天
轉(zhuǎn)載請標(biāo)明本文出處:http://blog.csdn.net/tonyshengtan ,出于尊重文章作者的勞動(dòng),轉(zhuǎn)載請標(biāo)明出處!文章代碼已托管,歡迎共同開發(fā):https://github.com/Tony-Tan/DIPpro
開篇空話
好久沒寫博客了,已然不熟練了,過完年全部人都不好了,哈哈,到剛才為止算是把圖象分割學(xué)習(xí)了1下,這兩天把學(xué)習(xí)結(jié)果和代碼簡單總結(jié)1下。
前面已介紹了邊沿檢測,和邊沿修復(fù),閾值處理的基本概念也進(jìn)行了1定介紹。閾值處理速度快,算法簡單,所以利用比較廣泛,算法的基本問題在于計(jì)算出閾值處理的閾值,在接下來的幾篇我可,介紹幾種肯定閾值的算法,基本數(shù)學(xué)知識都來自統(tǒng)計(jì)學(xué),包括最簡單的平均數(shù),p-分位數(shù),方差等數(shù)學(xué)知識。
下面就從最簡單的均值閾值開始介紹。
平均閾值
均值處理屬于閾值中最簡單的1種,其使用的1副圖象所有灰度的均值作為閾值,分割圖象。
根據(jù)統(tǒng)計(jì)學(xué)知識,求均值可使用幾率方法:
1. 計(jì)算圖象灰度直方圖
2. 歸1化直方圖,得出直方圖每項(xiàng)的幾率
3. 直方圖的橫坐標(biāo)與幾率的成績?nèi)缓笄蠛蛅hreshold=mean=∑L?1i=0p(i)×i
根據(jù)以上均值得到閾值,然后根據(jù)閾值處理基本公示處理整幅圖象。
代碼
/*********************************************************************************/
/*********************************************************************************/
計(jì)算從start到end的直方圖的平均值,hist未歸1化
double getMeaninHist(int start,int end,int *hist){
int hist_count=0;
double hist_value=0;
for(int i=start;i
hist_count+=hist[i];
hist_value+=(double)hist[i]*i;
}
return hist_value/(double)hist_count;
}
/*********************************************************************************/
/*********************************************************************************/
//均值法求閾值
//閾值等于全圖的像素的平均值
void MeanThreshold(double *src,double *dst,int width,int height,int type){
int hist[GRAY_LEVEL];
double threshold_value=0.0;
InitHistogram(hist);
setHistogram(src, hist, width,height);
threshold_value=getMeaninHist(0, GRAY_LEVEL, hist);
Threshold(src,dst, width, height, threshold_value,type);
}
結(jié)果
視察1下結(jié)果:
原圖:
原圖直方圖:
平均閾值:
閾值處理結(jié)果:
原圖加入1%的高斯噪聲
未處理:
直方圖:
平均閾值:
閾值處理結(jié)果:
原圖加入5%的高斯噪聲
未處理:
直方圖:
平均閾值:
閾值處理結(jié)果:
原圖加入7%的高斯噪聲
未處理:
直方圖:
平均閾值:
閾值處理結(jié)果:
lena圖均值閾值處理:
原圖:
處理后結(jié)果:
閾值:
總結(jié)
均值閾值可以完成1些較為簡單的的處理,但對目標(biāo)與背景的大小敏感,也就是直方圖那兩個(gè)峰的面積大小有關(guān),如果這兩個(gè)峰相對大小相差不多,那末均值相對效果較好,如果兩個(gè)峰相差太多,也就是背景比目標(biāo)大很多或相反目標(biāo)比背景大很多時(shí),結(jié)果失效。其次也遭到噪聲影響,但沒有上1因素影響大。
總結(jié)
以上是生活随笔為你收集整理的c语言实现灰度图像阈值分割,灰度图像--图像分割 阈值处理之平均阈值的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何投诉网购商家(网上购物怎么投诉最有效
- 下一篇: win7 计算器 android,教你巧