首页 技术 正文
技术 2022年11月23日
0 收藏 691 点赞 2,162 浏览 2830 个字

1 均值滤波介绍

滤波是滤波是将信号中特定波段频率滤除的操作,是从含有干扰的接收信号中提取有用信号的一种技术。

均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(如3×3模板:以目标象素为中心的周围8个象素,构成一个滤波模板,即去掉目标象素本身),再用模板中的全体像素的平均值来代替原来像素值。

均值滤波效果:平滑线性滤波处理降低了图像的“尖锐”变化。由于典型的随机噪声由灰度级的急剧变化组成,因此常见的平滑处理的应用就是降低噪声。均值滤波器的主要应用是去除图像中的不相关细节,其中“不相关”是指与滤波器模板尺寸相比较小的像素区域。然而,由于图像的边缘也是由图像灰度的尖锐变化带来的特性,所以均值滤波处理还是存在着边缘模糊的负面效应。

2 均值滤波算法实现(C语言)

 // junzhilvbo.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include "stdlib.h"
#include "string.h" #define DATA_X 256 //数字图像水平像素个数
#define DATA_Y 256 //数字图像竖直像素个数 void OpenFile(const char *cFilePath , int nOriginalData[DATA_Y][DATA_X])
{
printf("正在获取数据......\n");
FILE *fp ;
fp = fopen(cFilePath , "r");
if(NULL == fp)
{
printf("open file failed! \n");
return ;
} unsigned char *pData = (unsigned char *)malloc(sizeof(unsigned char)*DATA_X*DATA_Y);
if(NULL == pData)
{
printf("memory malloc failed!\n");
return ;
} fread(pData , sizeof(unsigned char)*DATA_X*DATA_Y , , fp); int count_x = ;
int count_y = ; for(;count_y < DATA_Y ; count_y++)
{
for(; count_x < DATA_X ;count_x++)
{
nOriginalData[count_y][count_x] = pData[count_y*DATA_Y+count_x];
}
} free(pData);
fclose(fp); return ;
} void SaveFile(const char *cFilePath , int nResultData[DATA_Y][DATA_X])
{
printf("正在保存数据......\n");
int count_x,count_y; FILE *fp ;
fp = fopen(cFilePath , "w");
if(NULL == fp)
{
printf("open file failed! \n");
return ;
} for(count_y=;count_y<DATA_Y;count_y++)
{
for(count_x=;count_x<DATA_X;count_x++)
{
fwrite(&nResultData[count_y][count_x],,,fp);
}
} fclose(fp);
printf("文件保存成功! \n"); return ;
} bool JunZhiLvBo(const int nOriginalData[DATA_Y][DATA_X], int nResultData[DATA_Y][DATA_X])
{
printf("正在进行均值滤波......\n");
int count_x ,count_y ; /*3*3模版滤波计算,不计算边缘像素*/
for(count_y = ; count_y < DATA_Y ; count_y++)
{
for(count_x = ; count_x < DATA_X ;count_x++)
{
nResultData[count_y][count_x] = (int)((nOriginalData[count_y-][count_x-]+
nOriginalData[count_y-][count_x] +
nOriginalData[count_y-][count_x+]+
nOriginalData[count_y][count_x-] +
nOriginalData[count_y][count_x] +
nOriginalData[count_y][count_x+] +
nOriginalData[count_y+][count_x-]+
nOriginalData[count_y+][count_x] +
nOriginalData[count_y+][count_x+])/);
}
} /*对四个边缘直接进行赋值处理*/
for(count_x=;count_x<DATA_X;count_x++) //水平边缘像素等于原来像素灰度值
{
nResultData[][count_x]=nOriginalData[][count_x];
nResultData[DATA_Y-][count_x]=nOriginalData[DATA_Y-][count_x];
}
for(count_y=;count_y<DATA_Y-;count_y++) //竖直边缘像素等于原来像素灰度值
{
nResultData[count_y][]=nOriginalData[count_y][];
nResultData[count_y][DATA_X-]=nOriginalData[count_y][DATA_X-];
} return true ;
} int _tmain(int argc, _TCHAR* argv[])
{
int nOriginalData[DATA_Y][DATA_X]; //保存原始图像灰度值
int nResultData[DATA_Y][DATA_X]; //保存滤波后的灰度值 memset(nOriginalData,,sizeof(nOriginalData)); //初始化数组
memset(nResultData,,sizeof(nResultData)); char cOpenFilePath[] = "Lena.raw"; //图像文件路径 OpenFile(cOpenFilePath,nOriginalData); if(!JunZhiLvBo(nOriginalData,nResultData)) //滤波计算
{
printf("操作失败!\n");
return ;
} char cSaveFilePath[] = "Result.raw"; //文件保存路径 SaveFile(cSaveFilePath,nResultData); return ;
}

3 均值滤波算法效果对比

均值滤波之前:                                均值滤波之后:

图像处理之均值滤波介绍及C算法实现  图像处理之均值滤波介绍及C算法实现

微信扫一扫

支付宝扫一扫

本文网址:https://www.zhankr.net/140896.html

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:875 阅读:5,067
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:806 阅读:3,504
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:565 阅读:4,312
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:730 阅读:4,307
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:4,904
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:3,097
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:8:00-16:00

客服电话

400-888-8888

客服邮箱

ceotheme@ceo.com

扫描二维码

关注微信公众号

扫描二维码

手机访问本站