⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 image_smooth.cpp

📁 各种算术算法
💻 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 + -