• 大小: 43KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: C/C++
  • 标签: 均值滤波  C语言  

资源简介

C语言写的算法,实现了数字图像处理的均值滤波算法,比较简单,适合初学者。

资源截图

代码片段和文件信息

// junzhilvbo.cpp : Defines the entry point for the console application.
//  10031 张敏 2010302590099

#include “stdafx.h“
#include “stdio.h“
#include “string.h“
#include “stdlib.h“

#define DATA_X 256      //数字图像水平像素个数
#define DATA_Y 256      //数字图像竖直像素个数

int main(int argc char* argv[])
{  
void OpenFile(const char cFilePath[]int nOriginalData[DATA_Y][DATA_X]);             //函数申明
void SaveFile(const char cFilePath[]int nResultData[DATA_Y][DATA_X]);
bool JunZhiLvBo(const int nOriginalData[DATA_Y][DATA_X]int nResultData[DATA_Y][DATA_X]);
int nOriginalData[DATA_Y][DATA_X];                                           //保存原始图像灰度值
int nResultData[DATA_Y][DATA_X];                                             //保存滤波后图像灰度值
memset(nOriginalData0sizeof(nOriginalData));                               //初始化数组
memset(nResultData0sizeof(nResultData));                                  
char cOpenFilePath[] = “Lena.raw“;                                           //图像文件路径
OpenFile(cOpenFilePathnOriginalData);                          
if(!JunZhiLvBo(nOriginalDatanResultData))                                   //滤波计算
{
printf(“操作失败!\n“);
exit(0);
}
char cSaveFilePath[] = “Result.raw“;                                        //文件保存路径
SaveFile(cSaveFilePathnResultData);             
return 0;
}

void OpenFile(const char cFilePath[]int nOriginalData[DATA_Y][DATA_X])
{
printf(“正在获取数据…\n“);
FILE *fp;
fp = fopen(cFilePath“r“);
if(fp==NULL)                                                                //判断文件是否打开成功
{
printf(“文件打开失败!\n“);
        exit(0);

unsigned char *pData = new unsigned char[DATA_Y*DATA_X];           
fread(pData1DATA_Y*DATA_Xfp);                                            //读取各像素点赋灰度值
int count_xcount_y;     
for(count_y=0;count_y for(count_x=0;count_x           nOriginalData[count_y][count_x] = (unsigned int)pData[count_y*DATA_X+count_x];           //将像素点灰度值储存在二维数组中
delete [] pData;
fclose(fp);

}

void SaveFile(const char cFilePath[]int nResultData[DATA_Y][DATA_X])
{
printf(“正在保存数据…\n“);
int count_xcount_y;
FILE *fp;
fp = fopen(cFilePath“w“);
if(fp==NULL)                                                 //判断文件是否打开成功
{
printf(“文件保存败!\n“);
        exit(0);
}      
for(count_y=0;count_y for(count_x=0;count_x        fwrite(&nResultData[count_y][count_x]11fp);
fclose(fp);
printf(“文件保存成功! \n“);
}

bool JunZhiLvBo(const int nOriginalData[DATA_Y][DATA_X]int nResultData[DATA_Y][DATA_X])
{
printf(“正在进行均值滤波计算…\n“);
int count_xcount_y;
for(count_y=1;count_y for(count_x=1;count_x           nResultData[count_y][count_x]=(int)((nOriginalData[count_y-1][count_x-1]+
  nOrig

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        297  2012-04-14 20:16  StdAfx.cpp

     文件        769  2012-04-14 20:16  StdAfx.h

     文件       3987  2012-04-14 21:54  junzhilvbo.cpp

     文件      65536  2010-03-28 20:43  Lena.raw

----------- ---------  ---------- -----  ----

                70589                    4


评论

共有 条评论