一维中值滤波怎么计算

一维中值滤波怎么计算,第1张

1、取连续采样值N(N大于等于3)点,N为奇数,去掉最小值和最大值,去中间的值作为中间点的采样值。
2、实际应用中,也可以取9点,去掉最小两点和最大两点,取中间5点的平均值作为采样值。N取多少点,去掉最大最小几个数值,没有硬性的规定,自己可以在程序中根据实际情况自行决定。

按照题目要求写如下代码,后面附结果,如果满意,望采纳!
#include <stdioh>
#include <stdlibh>
#include <stringh>
double A[3][16] = {160,163,167,80,83,85,155,158,159,20,22,23,170,173,176,179,
   159,158,155,75,78,80,156,159,153,25,23,21,167,168,166,164,
   153,155,157,81,84,82,154,153,158,27,25,24,168,172,171,170}; 
double mask[3][3] = {1,2,1,
 2,4,2,
 1,2,1};
void myfilter(double p)
{
int i,j;
for (i = 1; i <= 14; ++i)
{
/ code /
double sum = 0;
for(j=0;j<3;++j)
{
sum += A[j][i-1]mask[j][0] + A[j][i]mask[j][1] + A[j][i+1]mask[j][2];
}
// printf("sum=%lf\n", sum);
p++ = sum/16;
}
return;
}
int main(int argc, char const argv[])
{
/ code /
double ans[14];
double  p = ans;
myfilter(p);
int i;
for(i=0;i<14;++i)
{
printf("%4lf\n", ans[i]);
}
printf("\n");
system("pause");
return 0;
}

方法一:

imfinfo('testpng')%查看文件信息

%可以看出是真彩色图像,ColorType: 'truecolor'

%转换为灰度图像进行处理

X=imread('testpng');

X=rgb2gray(X);

X=im2double(X);%uint8转换为double类型

%保留运算后的负值

%防止运算时精度丢失

g=medfilt2(X,[3 3],'symmetric');%中值滤波33,采用对称的填充方式

g1=im2uint8(g);%double[0,1]----->uint8[0,255]

%二值化处理

g1(find(g1<128))=0;

g1(find(g1>=128))=1;

subplot(3,1,1);

imshow(X,[]);title('原图');

subplot(3,1,2);

imshow(g,[]);title('33中值滤波');

subplot(3,1,3);

imshow(g1,[]);title('33中值滤波+二值化处理');

结果见1png

方法二:

imfinfo('testpng')%查看文件信息

%可以看出是真彩色图像,ColorType: 'truecolor'

%转换为灰度图像进行处理

X=imread('testpng');

X=rgb2gray(X);

X=im2double(X);%uint8转换为double类型

%保留运算后的负值

%防止运算时精度丢失

g=medfilt2(X,[3 3],'symmetric');%中值滤波33,采用对称的填充方式

g1=mat2gray(g);

g1=im2bw(g1,05);%二值化处理,im2bw:image to black-white的意思

subplot(3,1,1);

imshow(X);title('原图');

subplot(3,1,2);

imshow(g);title('33中值滤波');

subplot(3,1,3);

imshow(g1);title('33中值滤波+二值化处理');

结果与前面的相同。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12893977.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存