资源描述:
《图像分析与计算机视觉实践报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、图像分析与计算机视觉实践报告课题:专业:班级:姓名:一、实验目的了解图像平移旋转和缩放的原理,通过VisualC++实现图像的平移旋转和缩放。二、实验理论说明图像平移:设(X0,Y0)是原图像的一点,图像的水平平移量为Tx,垂直平移量为Ty,平移后的坐标为(X1,Y1),平移后的坐标变为,用矩阵表示为:。图像缩放:图像缩放是指图像的大小按照指定的比率放大或缩小。假设图像x轴方向的缩放比率Sx,y轴方向的缩放比率Sy,相应的变换表达式为:图像旋转:旋转一般是指将图像围绕某一指定点旋转一定的角度。设原图像的坐标为P0(X0,Y0),绕原点逆时针旋转角度θ到点P1(X1,Y1),旋转公式为:。
2、三、实验主要程序平移代码:voidCImageProcessingView::OnJhbhPy(){if(numPicture==0){AfxMessageBox("载入图片后才能空间平移!",MB_OK,0);return;}//定义采样对话框也是用来空间变换平移的坐标CImagePYDlgdlg;if(dlg.DoModal()==IDOK)//显示对话框{//采样坐标最初为图片的自身像素if(dlg.m_xPY>m_nWidth
3、
4、dlg.m_yPY>m_nHeight){AfxMessageBox("图片平移不能为超过原图长宽!",MB_OK,0);return;}AfxMess
5、ageBox("图片空间变换-平移!",MB_OK,0);//打开临时的图片读写文件FILE*fpo=fopen(BmpName,"rb");FILE*fpw=fopen(BmpNameLin,"wb+");fread(&bfh,sizeof(BITMAPFILEHEADER),1,fpo);fread(&bih,sizeof(BITMAPINFOHEADER),1,fpo);fwrite(&bfh,sizeof(BITMAPFILEHEADER),1,fpw);fwrite(&bih,sizeof(BITMAPINFOHEADER),1,fpw);fread(m_pImage,m_nI
6、mage,1,fpo);unsignedchar*ImageSize;ImageSize=newunsignedchar[m_nImage];//new和delete有效的进行动态内存的分配和释放intPlace;//建立临时坐标记录起始坐标(0,0)平移过来的位置intm_pImagePlace;//原始图像平移为(0,0)图像把它平移到Place位置unsignedcharblack;//填充黑色='0'Place=dlg.m_yPY*m_nWidth*3;//前m_yPY行都要填充为黑色black=0;//颜色为黑色m_pImagePlace=0;//图像处事位置为(0,0),把该
7、点像素平移过去intcountWidth=0;//记录每行的像素个数,满行时变回0intnumber=0;//数字记录使用的像素行数,平移时使用for(inti=0;i=Place&&countWidth8、){//RGB乘3ImageSize[i]=black;//赋值为黑色countWidth++;continue;}/*第三部分:图像像素平移区域*/elseif(i>=Place&&countWidth>=dlg.m_xPY*3){ImageSize[i]=m_pImage[m_pImagePlace];m_pImagePlace++;countWidth++;if(countWidth==m_nWidth*3){number++;m_pImagePlace=number*m_nWidth*3;}}}fwrite(ImageSize,m_nImage,1,fpw);fclose(fpo
9、);fclose(fpw);numPicture=2;level=200;//200表示几何变换Invalidate();}}旋转代码:voidCImageProcessingView::OnJhbhTxxz(){if(numPicture==0){AfxMessageBox("载入图片后才能空间旋转!",MB_OK,0);return;}//定义对话框并调用对话框CImageXZDlgdlg;if(dlg.DoModal()==I