收藏 分销(赏)

《数字图象处理》实验指导书.doc

上传人:xrp****65 文档编号:6117015 上传时间:2024-11-28 格式:DOC 页数:15 大小:416KB 下载积分:10 金币
下载 相关 举报
《数字图象处理》实验指导书.doc_第1页
第1页 / 共15页
《数字图象处理》实验指导书.doc_第2页
第2页 / 共15页


点击查看更多>>
资源描述
《数字图像处理》实验指导书 《数字图象处理》 实验指导书 目 录 实验一:数字图像读取及色彩、亮度、对比度变化 2 实验二:数字图像的噪声去除 3 实验三:数字图像的边缘检测 4 实验四:数字图像的放大、插值 5 实验五:数字图像的Fourier变换 6 实验六:绘制灰度直方图 7 实验七:数字图像的转置 10 附 录:BMP文件格式 12 实验一:数字图像读取及色彩、亮度、对比度变化 一、实验目的: 了解数字图像的存储格式,并学会对图像的某些视觉特征作简单处理。 二、实验要求: 1. 从最常用的“.BMP”图像格式中读取图像数据; 2. 对数字图像的表示方式(如RGB、YUV)及各种表示方式之间的转换有初步了解; 3. 根据输入参数改变数字图像的色彩、亮度、对比度。 三、实验步骤: 1. 利用工具(如ACDSee、PhotoShop)将Sample.1.jpg转换为Sample1.bmp; 2. 根据BMP格式(详见附录),将图像内容读入内存数组; 3. 通过访问数字图像RGB三个通道的对应矩阵,改变数字图像的色彩; 4. 将数字图像的RGB表示转换为YUV表示; Y=0.30R+0.59G+0.11B U=0.70R-0.59G-0.11B V=-0.30R-0.59G+0.89B 5. 通过访问Y(亮度)通道,改变数字图像的亮度; 6. 通过Y(亮度)通道作灰度的线性变换,改变数字图像的对比度。 四、实验图像: Sample1.jpg 实验二:数字图像的噪声去除 一、实验目的: 学会用滤波器去除图像中的噪声。 二、实验要求: 1. 用均值滤波器去除图像中的噪声; 2. 用中值滤波器去除图像中的噪声; 3. 比较两种方法的处理结果 三、实验步骤: 1. 利用工具(如ACDSee、PhotoShop)将Sample2-2.jpg转换为Sample2-2.bmp; 2. 根据BMP格式(详见附录),将图像内容读入内存数组; 3. 用均值滤波器去除图像中的噪声; 4. 用中值滤波器去除图像中的噪声; 将两种处理方法的结果与原图比较; 5. 注意两种处理方法对边缘的影响。 四、实验图像: Sample2-1.jpg(原始图像) Sample2-2.jpg(加噪声后的图像) 实验三:数字图像的边缘检测 一、实验目的: 学会两种简单的图像边缘检测方法。 二、实验要求: 1. 用梯度算子检测图像中的边缘; 2. 用Sobel算子检测图像中的边缘; 3. 比较两种方法的处理结果 三、实验步骤: 1.利用工具(如ACDSee、PhotoShop)将Sample3-1.jpg,Sample3-2.jpg转换为Sample3-1.bmp,Sample3-2.bmp; 2. 根据BMP格式(详见附录),将图像内容读入内存数组; 3. 用梯度算子检测图像中的边缘信息; 用Sobel算子检测图像中的边缘信息; 4. 改变阈值,观察边缘状况 5. 将两种处理方法的结果作比较; 四、实验图像: Sample3-1.jpg Sample3-2.jpg 实验四:数字图像的放大、插值 一、实验目的: 比较两种图像的放大、插值方法方法。 二、实验要求: 1. 用双线性插值法放大图像; 2. 用Sinc函数插值法放大图像; 3. 比较两种内插方法的处理效果和速度 三、实验步骤: 1. 利用工具(如ACDSee、PhotoShop)将Sample2-1.jpg转换为Sample2-1.bmp; 2. 根据BMP格式(详见附录),将图像内容读入内存数组; 3. 用双线性插值法放大图像; (算法详见讲义) 4.用Sinc函数插值法放大图像; (算法详见讲义) 考虑到程序的运行速度,可以仅对图像进行2的幂次方倍数的放大,并据此对算法进行优化。 5.将两种处理方法的结果及速度作比较。 四、实验图像: Sample2-1.jpg 实验五:数字图像的Fourier变换 一、实验目的: 掌握Fourier变换、反变换的算法实现,并初步理解Fourier变换的物理意义。 二、实验要求: 1. 用Fourier变换算法对图像作二维Fourier变换。 2. 用Fourier反变换算法对图像作二维Fourier反变换。 3. 评价人眼对图像幅频特性和相频特性的敏感度。 三、实验步骤: 1. 利用工具(如ACDSee、PhotoShop)将Sample5-1.jpg转换为Sample5-1.bmp; 2. 根据BMP格式(详见附录),将图像内容读入内存数组; 3. 用Fourier变换算法,对图像作二维Fourier变换; (考虑图像为256*256,可以采用快速Fourier变换方法) 4. 用Fourier系数的幅度进行Fourier反变换; 5. 用Fourier系数的相位进行Fourier反变换; 6. 比较4、5的结果,评价人眼对图像幅频特性和相频特性的敏感度。 四、实验图像: Sample5.jpg(256*256) 实验六:绘制灰度直方图 一、实验目的: 掌握绘制灰度直方图算法实现,理解灰度直方图进行图像增强原理。 二、实验要求: (1)创建灰度直方图数据 (2)定制灰度直方图对话框 (3)显示直方图 三、参考程序 (1)创建灰度直方图数据 //******************************************* //函数名称: CreateHistogram() //参数说明: nX1、 nY1、 nX2、 nY2为需创建直方图图像区域坐标, 默认为- // 1。pData、pPalette、 nWidthBytes为位图数据指针、调色板指 // 针、 图像行字节宽度 //返回值: int型数组指针*pBuffer。在数组中依次存储亮度、红、绿、蓝分量 // 的直方图数据, 每个分量各占256个元素[FK)] //基本功能:创建指定的图像对象的直方图数据。如果未给定坐标,则针对整 个图像 //**************************************** int *CPointPro:: CreateHistogram(int nX1, int nY1, int nX2, int nY2, unsigned char *pData, RGBQUAD *pPalette, int nWidthBytes) { //图像指针为空, 无法操作返回 if(m_pDibObject == NULL) return(FALSE);  //分配直方图数据缓存区(数组) int *pBuffer = new int [256 * 4];  //分配直方图数据缓存区失败 if(pBuffer == NULL) return( NULL );  //直方图数据缓存区清零 memset(pBuffer, 0, (256 * 4) * sizeof(int));  //变量定义 DWORD dwGray;  int x, y; unsigned char *pTemp, ucRed, ucGreen, ucBlue; //图像的高度 int nHeight = m_pDibObject->GetHeight(); switch(m_pDibObject->GetNumBits()) { case 24:  for(y = nY1; y < nY2; y++) { //数据指针定位到图像数据起始位置 pTemp = pData; //数据指针定位到图像数据每行的起始零位置 pTemp += (( nHeight - 1 - y) * nWidthBytes); //数据指针定位到图像数据每行的起始nX1位置 pTemp += (nX1 * 3); for(x=nX1; x<=nX2; x++) { //获取像素颜色的三原色 ucRed = pTemp[x * 3 + 2]; ucGreen = pTemp[x * 3 + 1]; ucBlue = pTemp[x * 3]; //按关系L=0.3R+0.59G+0.11B, 得到亮度值 dwGray = (DWORD) (ucRed * 30 + ucGreen * 59 + ucBlue * 11) / 100; dwGray &= 0x000000ff;  //亮度直方图数据 pBuffer[dwGray]++; //红色直方图数据 pBuffer[256 + ucRed]++; //绿色直方图数据 pBuffer[512 + ucGreen]++; //蓝色直方图数据 pBuffer[768 + ucBlue]++; //数据指针加3 pTemp += 3; } } break; } return( pBuffer ); } (2)定制灰度直方图对话框 定制一个直方图对话框并创建一个CDlgIntensity类, 在它的构造函数中初始化成员变量(例如, 初始化直方图数据指针m_pnHistogram = NULL), 添加WM_PAINT的消息映射函数OnPaint(), 然后在消息映射函数中绘制直方图数据。 (3)显示直方图 void CDipView:: OnViewHist()  { CDipDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); //判断当前是否有图像对象 if( pDoc->m_pDibObject = = NULL ) return; //在点处理CPointPro类中创建用来绘制直方图的数据 CPointPro PointOperation( pDoc->m_pDibObject ); int *pHistogram = PointOperation.GetHistogram(); //生成一个对话框CDlgIntensity类的实例 CDlgIntensity HistDlg; //将直方图数据传给CDlgIntensity的成员变量m_pnHistogram if( pHistogram != NULL ) { //设置直方图数据指针 HistDlg.m_pnHistogram = pHistogram; //设置当前像素值为0的像素数 HistDlg.m_nCurrentPiexsNum = pHistogram[0]; //设置是否为256级灰度图像 HistDlg.m_bIsGray256 = PointOperation.IsGray256(); } //显示对话框 if ( HistDlg.DoModal() != IDOK) return; delete [] pHistogram; } 四、实验图像: Lena图像及其直方图 实验七:数字图像的转置 一、实验目的: 掌握数字图像的几何变换; 二、实验要求: 编制数字图像转置的算法 三、参考程序: //****************************************** // 函数名称: BOOL Transpose() // 基本功能: 本函数对传入的CDibObject对象中的图像进行转置操作 // 参数说明: CDibObject *pDibObject 默认为NULL // 返回值: BOOL 转置成功返回TRUE, 否则返回FALSE //****************************************** BOOL CGeoTrans: : Transpose(CDibObject *pDibObject) { //定义指向源图像及新图像的指针、 位图数据指针、 调色板等指针变量 //获取源图像指针及文件头、 信息头、 调色板及图像数据等信息 //计算新图像大小(包括文件头、 信息头、 调色板和图像数据) //为新图像分配内存, 指定新图像的文件头、 信息头、 调色板及图像数据指针 //用255填充新图像数据区, 用源图像的文件头、 信息头填充相应的新图像 //调整文件总字节数、 新图像的宽度和高度等信息, 用原调色板填充新调色板 //由图像位数确定的移动字节数 int nMovedBits = 1; switch( m_pDibObject->GetNumBits() ) { case 8:  nMovedBits = 1; break; case 16: nMovedBits = 2; break; case 24: nMovedBits = 3; break; case 32: nMovedBits = 4; break; } // 针对图像每行进行操作 for(y = 0; y < nOldHeight; y++) { //指向源图像第y行 pOldTemp = pOldBits; pOldTemp += (nOldHeight -1 -y) * nOldWidthBytes; // 针对每行图像每列进行操作 for(x = 0; x < nOldWidth; x++) { //指向转置后的图像第x行, 第y个像素的指针 pNewTemp = pNewBits; pNewTemp += (nNewHeight -1 -x) * nNewWidthBytes; pNewTemp += y * nMovedBits; //复制像素 memcpy(pNewTemp, pOldTemp, nMovedBits); pOldTemp += nMovedBits; } } //将内存解锁和将不再使用的内存释放,将新图像设置为当前图像,返回TRUE } 四、实验图像: 转置前后的图像 附录:BMP文件格式 BMP文件由以下几部分组成:文件头、信息头、调色板信息(在256色图像中存在)和图像数据部分。 文件头格式: typedef struct tagBITMAPFILEHEADER { // bmfh WORD bfType; DWORD bfSize; WORD bfReserved1; WORD bfReserved2; DWORD bfOffBits; } BITMAPFILEHEADER; 信息头格式: typedef struct tagBITMAPINFOHEADER{ // bmih DWORD biSize; LONG biWidth; LONG biHeight; WORD biPlanes; WORD biBitCount DWORD biCompression; DWORD biSizeImage; LONG biXPelsPerMeter; LONG biYPelsPerMeter; DWORD biClrUsed; DWORD biClrImportant; } BITMAPINFOHEADER; 调色板信息:(由于本实验提供的均为真彩色图,没有调色板信息,故不再详述) 图像数据: 自左向右,自下向上,按照R-G-B三通道次序排列。 - 14 -
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服