• 大小: 828KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: Java
  • 标签: 武汉大学  

资源简介

2019年研究生复试 测绘遥感信息工程国家重点实验室 实验操作 使用C++或Java,在已经形成的框架中调试和编制程序,完成均值滤波算法。 均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了以目标像素为中心的周围像素,用模板中的全体像素的平均值来代替原来像素值。

资源截图

代码片段和文件信息

#include “stdafx.h“

//请根据正确的路径修改下列宏,保证文件正确读取
#define OUTFILE3x3 “D:\\OpOutputC3.txt“
#define OUTFILE5x5 “D:\\OpOutputC5.txt“

//如需子函数,请在此处定义

/*================================================================================
3x3均值滤波:
对输入的影像进行3x3均值滤波。
该函数结果不正确,请修改正确。

输入:
影像arrImage,整型数组
影像宽nCol,像素个数
影像高nRow,像素个数
输出:
滤波完成的影像arrImage
返回:无
==================================================================================*/
void Blur3x3(int* arrImage const int nCol const int nRow)
{
//开辟临时空间
int *arrNewImage = new int[nCol * nRow];

//均值滤波计算
for (int i = 0; i < nRow; ++i)
{
for (int j = 0; j < nCol; ++j)
{
double sum = 0.0;
sum += arrImage[(i - 1)*nCol + j - 1];
sum += arrImage[(i - 1)*nCol + j];
sum += arrImage[(i - 1)*nCol + j + 1];
sum += arrImage[i*nCol + j - 1];
sum += arrImage[i*nCol + j];
sum += arrImage[i*nCol + j + 1];
sum += arrImage[(i + 1)*nCol + j - 1];
sum += arrImage[(i + 1)*nCol + j];
sum += arrImage[(i + 1)*nCol + j + 1];
arrNewImage[i*nCol + j] = int(sum / 9 + 0.5);
}
}

//将计算结果复制回arrImage并清理临时空间
for (int i = 0; i < nRow; ++i)
for (int j = 0; j < nCol; ++j)
arrImage[i*nCol + j] = arrNewImage[i*nCol + j];
delete arrNewImage;

return;
}

/*================================================================================
NxN均值滤波:
对输入的影像进行NxN均值滤波。
该函数功能未实现,请补全。

输入:
影像arrImage,整型数组
影像宽nCol,像素个数
影像高nRow,像素个数
滤波窗口尺寸nN,奇数
输出:
滤波完成的影像arrImage
返回:无
==================================================================================*/
void BlurNxN(int* arrImage const int nCol const int nRow const int nN)
{
//开辟临时空间
int *arrNewImage = new int[nCol * nRow];

//当前实现仅仅是数据复制,请修改补全,完成NxN均值滤波
for (int i = 0; i < nRow; ++i)
{
for (int j = 0; j < nCol; ++j)
{
arrNewImage[i*nCol + j] = arrImage[i*nCol + j];
}
}

//将计算结果复制回arrImage并清理临时空间
for (int i = 0; i < nRow; ++i)
for (int j = 0; j < nCol; ++j)
arrImage[i*nCol + j] = arrNewImage[i*nCol + j];
delete arrNewImage;

return;
}

//=============答题分割线===========此线以后修改的修改不作为答题内容==================================================

void Output(const char *fileName const int *arrImage const int nCol const int nRow)
{
FILE *fp = fopen(fileName “w“);
for (int i = 0; i < nRow; ++i)
{
fprintf(fp “%d“ arrImage[i*nCol]);
for (int j = 1; j < nCol; ++j)
fprintf(fp “%d“ arrImage[i*nCol + j]);
fprintf(fp “\n“);
}
fclose(fp);
}

int main()
{
//初始化环境
int arrImage[] = {
0 255 0 255 0 255 0 255
255 0 255 0 255 0 255 0
0 255 0 255 0 255 0 255
255 0 255 0 255 0 255 0
0 255 0 255 0 255 0 255
255 0 255 0 255 0 255 0
0 255 0 255 0 255 0 255
255 0 255 0 255 0 255 0
};
int nCol = 8 nRow = 8;

//3x3均值滤波
Blur3x3(arrImage nCol nRow);
Output(OUTFILE3x3 arrImage nCol nRow);

//5x5均值滤波
BlurNxN(arrImage 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       36834  2019-03-12 19:30  试题.docx
     目录           0  2019-03-12 19:16  1_CPP Project\
     目录           0  2019-03-12 19:16  1_CPP Project\OPTest\
     文件        3373  2019-03-12 19:15  1_CPP Project\OPTest\OPTest.cpp
     文件        8073  2019-03-11 15:24  1_CPP Project\OPTest\OPTest.vcxproj
     文件        1333  2018-03-08 18:00  1_CPP Project\OPTest\OPTest.vcxproj.filters
     文件        1708  2018-03-08 18:00  1_CPP Project\OPTest\ReadMe.txt
     文件         293  2018-03-08 18:00  1_CPP Project\OPTest\stdafx.cpp
     文件         320  2018-03-08 18:00  1_CPP Project\OPTest\stdafx.h
     文件         314  2018-03-08 18:00  1_CPP Project\OPTest\targetver.h
     文件        1300  2018-03-08 18:00  1_CPP Project\OPTest.sln
     文件     2363392  2019-03-12 19:15  1_CPP Project\OPTest.VC.db
     目录           0  2019-03-12 19:13  2_Java Project\
     目录           0  2019-03-12 19:13  2_Java Project\OpTest\
     文件         301  2018-03-08 12:19  2_Java Project\OpTest\.classpath
     文件         382  2018-03-08 12:19  2_Java Project\OpTest\.project
     目录           0  2019-03-12 19:13  2_Java Project\OpTest\.settings\
     文件         598  2018-03-08 12:19  2_Java Project\OpTest\.settings\org.eclipse.jdt.core.prefs
     目录           0  2019-03-12 19:13  2_Java Project\OpTest\bin\
     文件        2885  2019-03-12 19:12  2_Java Project\OpTest\bin\StartOp.class
     目录           0  2019-03-12 19:13  2_Java Project\OpTest\src\
     文件        3840  2019-03-12 19:12  2_Java Project\OpTest\src\StartOp.java

评论

共有 条评论

相关资源