图形学-降噪技术-2维中值滤波

在图像采集过程中,由于电子设备的不稳定性(比如毛刺电压,电磁干扰等)会对获取的图像产生一些影响,这种影响叫噪声,降噪技术就是图像处理中消除这种噪声影响的技术。二维中值滤波就是其中一种方法。

中值滤波是一种局部图像平滑技术,属于非线性滤波,他可以是1维的也可以是2维的,因为图像是2维象素矩阵,所以这里使用2维中值滤波。

2维中值滤波算法是:
对于一幅图像的象素矩阵,取以目标象素为中心的一个子矩阵窗口,这个窗口可以是3*3 ,5*5 等根据需要选取,对窗口内的象素灰度排序,取中间一个值作为目标象素的新灰度值。
窗口示例如
ooo
oxo
ooo
上面x为目标象素,和周围o组成3*3矩阵Array,然后对这9个元素的灰度进行排序,以排序后的中间元素Array[4]为x的新灰度值,如此就完成对象素x的中值滤波,再迭代对其他需要的象素进行滤波即可。

下面根据这个理论用BCB6实现中值滤波算法
//--------------------------------BCB6程序

#include <vcl.h>
#pragma hdrstop
#include<stdio.h>
#include "Unit1.h"
#include"File1.h"

#pragma pack(1)

/*
        程序:图形学-中值滤波
        作者:sboom(Lingch)
        日期:12月26日
*/
//BMP文件头
struct BITMAPFILEHEADER_
{
 short type;
        int bfSize;
 short re1,re2;
        int Offbits;
};
//BMP信息头
struct BITMAPINFO_
{
 long size;
 long width,height;
 short planes,bitCount;
 long comp,sizeImg;
 long xpels,ypels;
 long used,important;
};
//BMP彩色表项
struct COLOR_
{
        char blue,green,red;
};
//------将BMP彩色表的数据校正到BCB TColor的数据。
TColor* SwitchColor(unsigned char r,unsigned char g,unsigned char b)
{
        TColor *re=new TColor;
        *re=(r  | g<<8 | b<<16 );
        *re=*re & 0x00ffffff;
        return re;
}

void xxx()
{
        FILE *f=fopen("f://7.bmp","rb");
        if(f==NULL)             /*判断文件是否打开成功*/
        {
             ShowMessage("File open error");
             r

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值