图像中值滤波代码
作者:cnfgg 日期:2009-07-13
中值滤波是一种非常有用的非线性图像处理方法,该算法是1971年首次提出并应用于信号处理中,后来逐渐应用到图像处理中。它克服了线性滤波如最小均方滤波、均值滤波在对图像进行消噪处理后使图像的边缘变得模糊的负面影响,即中值滤波既可以去除图像中的噪声又能保护图像的边缘和轮廓。
具体代码如下:
复制内容到剪贴板
程序代码
程序代码void MedianFilter(IMG_DATATYPE *pImg,int iWidth,int iHeight,int size)
{
IMG_DATATYPE *pSrc = NULL;
IMG_DATATYPE *pBuff = NULL;
int i,j,x,y,iRealSize;
IMG_DATATYPE temp;
pSrc = new IMG_DATATYPE[iWidth * iHeight];
pBuff = new IMG_DATATYPE[size * size];
if(pImg == NULL || pSrc == NULL || pBuff == NULL || iWidth <= 0 || iHeight <= 0)
return;
for(i=0;i<iHeight;i++)
{
for(j=0;j<iWidth;j++)
{
iRealSize = 0;
for(x = -size/2;x <= size/2;x++)
for(y = -size/2;y <= size/2;y++)
{
if(i + x >= 0 && i + x < iHeight && j + y >= 0 && j + y < iWidth)
{
pBuff[iRealSize++] = pImg[(i + x) * iWidth + (j + y)];
}
}
for(x = 0;x < iRealSize - 1;x++)
for(y = 0;y < iRealSize - 1 - x;y++)
{
if(pBuff[y] > pBuff[y+1])
{
temp = pBuff[y];
pBuff[y] = pBuff[y+1];
pBuff[y+1] = temp;
}
}
pSrc[i * iWidth + j] = pBuff[iRealSize/2];
}
}
memcpy(pImg, pSrc, iWidth * iHeight);
delete pSrc;
delete pBuff;
}
评论: 2 | 引用: 0 | 查看次数: -
回复
]你会彩色图像的中值滤波吗
admin 于 2010-04-27 01:19 PM 回复
把彩色图像的R,G,B分别当成灰度图,进行中值滤波,然后合成彩色图像就可以了吧。
看不懂呀!
发表评论
上一篇
下一篇

文章来自:
Tags:
相关日志: