欢迎来到天天文库
浏览记录
ID:44891921
大小:5.14 MB
页数:31页
时间:2019-11-01
《MFC空间几何变换之图像平移、镜像、旋转、缩放详解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、文档MFC空间几何变换之图像平移、镜像、旋转、缩放详解一.图像平移 前一篇文章讲述了图像点运算(基于像素的图像变换),这篇文章讲述的是图像几何变换:在不改变图像内容的情况下对图像像素进行空间几何变换的处理方式。 点运算对单幅图像做处理,不改变像素的空间位置;代数运算对多幅图像做处理,也不改变像素的空间位置;几何运算对单幅图像做处理,改变像素的空间位置,几何运算包括两个独立的算法:空间变换算法和灰度级插值算法。 空间变换操作包括简单空间变换、多项式卷绕和几何校正、控制栅格插值和图像卷绕,这里主要讲述简单的
2、空间变换,如图像平移、镜像、缩放和旋转。主要是通过线性代数中的齐次坐标变换。 图像平移坐标变换如下: 运行效果如下图所示,其中BMP图片(0,0)像素点为左下角。文档 其代码核心算法: 1.在对话框中输入平移坐标(x,y)m_xPY=x,m_yPY=y 2.定义Place=dlg.m_yPY*m_nWidth*3表示当前m_yPY行需要填充为黑色 3.新建一个像素矩阵 ImageSize=newunsignedchar[m_nImage] 4.循环整个像素矩阵处理 f
3、or(inti=0;i=Place&&countWidth=Place&&countWidth>=dlg.m
4、_xPY*3){//图像像素平移区域 ImageSize[i]=m_pImage[m_pImagePlace];//原(0,0)像素赋值过去 m_pImagePlace++; countWidth++; if(countWidth==m_nWidth*3){ //一行填满 m_pImagePlace走到(0,1) number++; m_pImagePlace=number*m_nWidth*3; }
5、 } } 5.写文件绘图fwrite(ImageSize,m_nImage,1,fpw) 第一步:在ResourceView资源视图中,添加Menu子菜单如下:(注意ID号) 第二步:设置平移对话框。将试图切换到ResourceView界面--选中Dialog,右键鼠标新建一个Dialog,并新建一个名为IDD_DIALOG_PY。编辑框(X)IDC_EDIT_PYX和(Y)IDC_EDIT_PYY,确定为默认按钮。设置成下图对话框:文档 第三步:在对话框资源模板空白
6、区域双击鼠标—Createanewclass创建一个新类--命名为CImagePYDlg。会自动生成它的.h和.cpp文件。打开类向导(CtrlW),选择类名:CImagePYDlg添加成员变量如下图所示,同时在MessageMaps中生成ID_JHBH_PY实现函数。 文档 第四步:在CImageProcessingView.cpp中添加头文件#include"ImagePYDlg.h",并实现平移。[cpp] viewplain copy1./***********************************
7、*********************/ 2./* 图像空间几何变换:图像平移 ID_JHBH_PY(几何变换-平移) 3./* 使用平移对话框:CImagePYDlg dlg 4./* 算法:f(x,y)=f(x+x0,y+y0)图像所有点平移,空的补黑'0' 5./* 注意该图像平移方法只是从左上角(0,0)处开始平移 6./* 其他方向原理相同 自己去实现 7./*****************
8、***************************************/ 8. 9.void CImageProcessingView::OnJhbhPy() 10.{ 11. if(numPicture==0) { 12. AfxMessageBox("载入图片
此文档下载收益归作者所有