均值滤波c语言
1. 下面这段单片机c语言程序是一段滤波函数是什么意思麻烦给讲解一下
GetADC(1); //AD转换开始函数
Current_buf += ADCR; //将AD值叠加
CurrentVal =(word)(Current_buf>>2); //8位AD,配置的是左对齐,要右移两位得到正确值
Current_buf -= CurrentVal; //感觉不是滤波,不清楚这行的目的。
2. 各位大哥救命,两道C语言数字图像处理作业!大虾救命
作业1非常简单,楼本不是楼上说的没其他lib就不能做,只要把bmp文件的文件头和位图信息结构去掉,剩下的数据就是RAW了。根本不需要其他lib文件。只需要用C的标准库函数就完全可以非常简单的实现了。
3. 关于c++中均值滤波求助
这个filter是用来平滑图像用的,简单来说是对一幅(width * height)大小的图像按下述方法进行平滑化,以达到除去图像中噪声的目的。 首先把输入图像中每个像素点和该像素点四周的8个像素点作为一组来看,将这9个像素点的灰度进行排序后取最中间的...
4. 请教C语言 如何滤除采集回来跳变的数据,如何判断采集回来的数据是增大还是减小
1)去除异常(随机噪声)值
按描述,估计采集的是缓变信号。如果是的话,可以采用均值法滤波:求前N-1次采集值的均值后,与最近一次采集值比较(求差值),如果差值超过一定范围,则丢弃;否则保留。
2)判断递增递减
比较理想的方法是利用最近采集的N点数据做样条函数y=x(t),可以是二次样条或三次样条,具体采用几次样条,同样要有被测信号特性决定。然后再对样条函数求导(dy/dt )即可判断出递增递减趋势。点数值N大于等4个比较合适
5. c++ 5*5均值滤波器
程序当然要写,才能完成了;但是,对你的问题,没有理解?
每个像素点是R、G、B三个颜色值,有效值是0-255;
你说的是5*5内所有像素和,将是一个什么类型的颜色数值,图像会变成什么样子?
6. 数字图像处理均值滤波器在c++上实现
/**
** method to remove noise from the corrupted image by mean value
* @param corrupted input grayscale binary array with corrupted info
* @param smooth output data for smooth result, the memory need to be allocated outside of the function
* @param width width of the input grayscale image
* @param height height of the input grayscale image
*/
void meanFilter (unsigned char* corrupted, unsigned char* smooth, int width, int height)
{
memcpy ( smooth, corrupted, width*height*sizeof(unsigned char) );
for (int j=1;j<height-1;j++)
{
for (int i=1;i<width-1;i++)
{
smooth [ j*width+i ] = (corrupted [ (j-1)*width+(i-1) ] + corrupted [ (j-1)*width+i] + corrupted [ (j-1)*width+(i+1) ] +
corrupted [ j*width+(i-1) ]+ corrupted [ j*width+i] + corrupted [ j*width+(i+1) ] +
corrupted [ (j+1)*width+(i-1) ] + corrupted [ (j+1)*width+i] + corrupted [ (j+1)*width+(i+1) ] ) / 9;
}
}
}
7. 使用C++代码完成 均值滤波器、中值滤波器、最大值滤波器、最小值滤波器分别对灰度图进行滤波
//中值滤波和均值大概这个样子
intnByteWidth=nWidth*3;
if(nByteWidth%4)nByteWidth+=4-(nByteWidth%4);
BYTEp[9],s;
inti,j;
for(y=1;y<nHeight-1;y++)
{
for(x=3;x<nWidth*3-3;x++)
{
//把一个像素周围的8个像素值分别赋值给p[0]到p[8]
p[0]=lpInput[x-3+(y-1)*nByteWidth];
p[1]=lpInput[x+(y-1)*nByteWidth];
p[2]=lpInput[x+3+(y-1)*nByteWidth];
p[3]=lpInput[x-3+y*nByteWidth];
p[4]=lpInput[x+y*nByteWidth];
p[5]=lpInput[x+3+y*nByteWidth];
p[6]=lpInput[x-3+(y+1)*nByteWidth];
p[7]=lpInput[x+(y+1)*nByteWidth];
p[8]=lpInput[x+3+(y+1)*nByteWidth];
//将p[0]到p[8]从小到大排列
for(j=0;j<5;j++)
{
for(i=j+1;i<9;i++)
{
if(p[j]>p[i])
{
s=p[j];
p[j]=p[i];
p[i]=s;
}
}
}
//将各点的中值赋值给该像素
lpOutput[x+y*nByteWidth]=p[4];
}
//----------------------------------------
intsr,sg,sb;
intnByteWidth=nWidth*3;
if(nByteWidth%4)nByteWidth+=4-(nByteWidth%4);
for(y=1;y<nHeight-1;y++)
{
for(x=1;x<nWidth-1;x++)
{
p=x*3+y*nByteWidth;
sb=0;
sg=0;
sr=0;
for(y1=-1;y1<=1;y1++)
for(x1=-1;x1<=1;x1++)
{
//像素本身及其周围的八个像素(3X3窗口内的像素)的blue值之和
sb+=lpInput[(y+y1)*nByteWidth+(x+x1)*3];
//像素本身及其周围的八个像素(3X3窗口内的像素)的green值之和
sg+=lpInput[(y+y1)*nByteWidth+(x+x1)*3+1];
//像素本身及其周围的八个像素(3X3窗口内的像素)的red值之和
sr+=lpInput[(y+y1)*nByteWidth+(x+x1)*3+2];
}
//将red,green,blue值的平均值赋值给该像素
lpOutput[p+2]=sr/9;
lpOutput[p+1]=sg/9;
lpOutput[p]=sb/9;
}
}
8. 求解这段C语言程序什么意思
由于没有上下文,只能进行以下猜测:
-图象幅面宽度为640,高度480,象素宽度为24位,实际占用32位;
-pMem可能是每个单元(32位)存放一个象素;
-RGB是将三个字节组合成一个象素24位,BGR是将RGB顺序的图象象素中红和蓝的字节调换;
-前面一个循环将图象第3行到477行进行均值滤波,滤波方式是将该象素附近8个点与此象素求和再除以9得到平均值;
-后面一个循环是将图象未做滤波的几行填充成白色;
-图象处理算法可能存在问题:应该利用双存储区进行运算,结果为了节省内存导致均值运算会得不到正确运算,比如我们计算屏幕中心点的均值时,取到的左边一个象素、整个上面的3个象素均已经被之前的均值运算结果覆盖了,不是原来的象素数据了。也可能是利用高位未使用的字节存放的处理结果?由于没有RGB的定义无法判断。
9. 计算3x3窗口的均值滤波和中值滤波(向下取整保留整数值)。
均值滤波和中值滤波属于空域图像增强的处理方法,均值滤波去麻点,中值滤波保边缘。
要进行均值滤波首先要生成一个3x3矩阵。算法运算窗口一般采用奇数点的邻域来计算中值,最常用的窗口有3X3和5X5模型。
1、通过2个或者3个RAM的存储来实现3X3像素窗口。
2、通过2个或者3个FIFO的存储来实现3X3像素窗口。
3、通过2行或者3行Shift_RAM的存储来实现3X3像素窗口。
(9)均值滤波c语言扩展阅读:
注意事项:
1、空间域指图像本身,空域变换直接对图像中的像素进行操作。
2、在进行横向滑动窗口滤波时,窗口中的像素仅仅是丢掉了左侧一列,增加了右侧一列数据,如果丢掉中间重叠的这一部分数据,到下个窗口再重新寻址和读取数据,无疑是计算的沉重负担,所以该算法的核心思想就是充分利用重叠部分,使用直方图来计算中值,不需要排序算法,快,且高效。
3、注意到两个直方图的累加是一个O(1)操作,和直方图的元素个数有关,而直方图元素个数是由图像位深决定的。
10. 均值滤波适用于处理什么样的噪声
均值滤波,适用于去除通过扫描得到的图像中的颗粒噪声。
均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。
这种方法保留了大部分包含信号的小波系数,因此可以较好地保持图像细节。小波分析进行图像去噪主要有3个方面:
(1)对图像信号进行小波分解。
(2)对经过层次分解后的高频系数进行阈值量化。
(3)利用二维小波重构图像信号。
(10)均值滤波c语言扩展阅读:
均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(x,y),选择一个模板。
该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度个g(x,y),即个g(x,y)=1/m ∑f(x,y) m为该模板中包含当前像素在内的像素总个数。
均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。