1,数字图像处理中值滤波

不会c只会vb
这是图像滤波、平滑的问题处理方式。一般使用模板进行平滑的时候,因为模板本身是有大小的所以边缘的地方处理不到。边缘一般忽略掉或是采用加行加列的方式。比如3*3模板加一行,5*5加两行。注意加行和列的时候不是同时加的,总有先后,所以5*5加一行变成6*5,再加一列变成6*6,就是这样,希望能帮到你。

数字图像处理中值滤波

2,VC中值滤波快速算法

unsigned char WINAPI GetMedianNum(unsigned char * bArray, int iFilterH,int iFilterW)/* unsigned char m = mid( mid(bArray[0],bArray[1],bArray[2]), mid(bArray[3],bArray[4],bArray[5]), mid(bArray[6],bArray[7],bArray[8])); return m;*/ // 循环变量 int i; int j; int k; // 中间变量 unsigned char bTemp; int iFilterLen=iFilterH*iFilterW; float average=0;//用于均值加速 //求均值 for (i=0;i<iFilterLen;i++) average+=bArray[i]; } average=average/iFilterLen; unsigned char pixel_mid; pixel_mid=bArray[(iFilterH-1)/2*iFilterW+(iFilterW-1)/2];//滤波窗口中心的取中值前的像素值 if (abs(average-pixel_mid)>10) //均值加速,其中“10”为原中值和均值之差,根据你的实际情况自行设置大小 //if(1) //不用均值加速时选此 //超快速中值法(本质就是伪中值法) //行排列 if (0) for (k = 0; k < iFilterH; k ++) for (j = 0; j < iFilterH-1; j ++) for (i = 0; i < iFilterW-1-j; i++) number++; if (bArray[i+iFilterH*k] > bArray[i+iFilterH*k+1]) bTemp = bArray[i+iFilterH*k]; bArray[i+iFilterH*k] = bArray[i+iFilterH*k+1]; bArray[i+iFilterH*k+1] = bTemp; } } 还有什么疑问,把邮箱发给我。

VC中值滤波快速算法


文章TAG:中值滤波算法  数字图像处理中值滤波  
下一篇