📄 image_smooth.cpp
字号:
//--------------------------------
// hustxdp 2007/10/30 21:10
//--------------------------------
/*--imaage_smooth----去噪聲處理(移動平均法)----
image_in : 輸入圖象數據指針
image_out : 輸出圖象數據指針
xsize : 圖象寬度
ysize : 圖象高度
(該方法即取3×3塊9個點得平均作估計值)
---------------------------------------------*/
void Image_smooth(BYTE *image_in, BYTE *image_out, int xsize, int ysize)
{
int i,j,buf;
for (j = 1; j < ysize-1; j++)
{
for (i = 1; i < xsize-1; i++)
{
buf = (int)(*(image_in + (j-1)*xsize +i-1))
+(int)(*(image_in + (j-1)*xsize +i))
+(int)(*(image_in + (j-1)*xsize +i+1))
+(int)(*(image_in + j*xsize +i-1))
+(int)(*(image_in + j*xsize +i))
+(int)(*(image_in + j*xsize +i+1))
+(int)(*(image_in + (j+1)*xsize +i-1))
+(int)(*(image_in + (j+1)*xsize +i))
+(int)(*(image_in + (j+1)*xsize +i+1));
*(image_out + j*xsize + i) = (BYTE)(buf/9);
}
}
}
/******************************************************
* 以上是第一种消除圖象噪聲,平滑圖象得方法 *
* 使用這種方法時,不管噪聲還是邊緣都一起糢糊化了 *
* 結果是噪聲被消除得同時,目標圖象也變模糊了 *
*----------------------------------------------------*
* 下麵我們介紹另外一種方法:中值濾波法 *
* 該方法是把周圍9個點按從小到大得順序排列 *
* 取中間得值(即第五個)麳作爲當前點得值 *
* 該方法比前面方法好,因爲它能很好地保留邊緣, *
* 不會模糊圖象 *
******************************************************/
/*--------Median-----去噪聲處理(中值濾波法)------
image_in :輸入圖象數據指針
image_out :輸出圖象數據指針
xsize :圖象寬度
ysize :圖象高度
-----------------------------------------------*/
int Media(BYTE *image_in, BYTE *image_out,int xsize,int ysize)
{
int i,j;
unsigned char c[9];
for (i = 1; i<ysize; i++)
{
for (j = 1; j<xsize; j++)
{
c[0] = *(image_in + (i-1)*xsize + j-1);
c[1] = *(image_in + (i-1)*xsize + j);
c[2] = *(image_in + (i-1)*xsize + j+1);
c[3] = *(image_in + i*xsize + j-1);
c[4] = *(image_in + i*xsize + j);
c[5] = *(image_in + i*xsize + j+1);
c[6] = *(image_in + (i+1)*xsize + j-1);
c[7] = *(image_in + (i+1)*xsize + j);
c[8] = *(image_in + (i+1)*xsize + j+1);
}
}
}
/**********---Median_value---*************
求9個象素得中央值
C : 象素配列
***************************************/
int median_value(BYTE c[9])
{
int i,j,buf;
for (j = 0; j<8; j++)
{
for (i = 0; i<8; i++)
{
if (c[i+1]<c[i])
{
buf = c[i+1];
c[i+1] = c[i];
c[i] = buf;
}
}
}
return c[4];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -