数字图像处理实验报告
实现Raw图像的读取、显示和存储
能够熟练使用Visual C++进行MFC编程 实现Raw图像的读取、显示和存储 加深对数字图像的理解
实验环境:Visual Studio 2019
所用语言:C++
1. 在已经安装了VisualStudio2019的前提下,首先确认MFC组件已经安装:
2. 新建项目
选择 MFC项目,选择应用类型与项目风格为:单个文件、MFC standard
创建即可
3. 完成如下配置:
以上几步实际上是向View的类中添加了若干可通过项目自身调用的函数如“onSaveAs”。
4. 进行编程:
主要是在对应的View文件中进行,首先在代码框架中增加自己的代码,记得在库函数之中加入相应的定义,分别是Raw图像的读取、显示和存储函程序。
(1) 灰色方形图像的显示:
主要代码:
m_Nsize = (int)sqrt(double(ndwSizeRaw));
m_Msize = m_Nsize;
while (m_Msize * m_Nsize != int(ndwSizeRaw) || m_Nsize % 4 != 0)
{
m_Nsize += 1;
m_Msize = int(int(ndwSizeRaw) / m_Nsize);
}
grey = *(m_pImage + m_Nsize*i + j);
pDC->SetPixelV(10 + j, 10 + i, RGB(grey, grey, grey));
效果:
(2) 彩色图:
读入数据时,由于数据以(R,G,B)三个一组,在对角标进行标定时要除以三。
因为灰度图像每一个像元一个数字:
而彩色图像则是每个像元三个数字作为一组(即RGB):
所以要对于从图像获取的每个像素的原始坐标除以3取整获得这个像元所在真实坐标。
主要代码:
double len = double(ndwSizeRaw) / 3;
m_Nsize = (int)sqrt(len);
blue = *(m_pImage + m_Nsize * i * 3 + j * 3);
green = *(m_pImage + m_Nsize * i * 3 + j * 3 + 1);
red = *(m_pImage + m_Nsize * i * 3 + j * 3 + 2);
pDC->SetPixelV(10 + j, 10 + i, RGB(blue, green, red));
效果图:
本次实验主要代码(Test1View.cpp):请点击这里
本次实验使用VC++,对于Raw类的灰度、彩色图像进行了读取、显示、存储的操作,加深了对于数字图像的理解。