一.一个简单的“photoshop”软件 二.设计目的:
数字图像处理,就是用数字计算机及其他有关数字技术,对图像进行处理,以达到预期的目的。随着计算机的发展,图像处理技术在许多领域得到了广泛应用,数字图像处理已成为电子信息、通信、计算机、自动化、信号处理等专业的重要课程。
数字图像处理课程设计是在完成数字图像处理的相关理论的学习后,进行的综合性训练课程,其目的主要包括:
1、使学生进一步巩固数字图像处理的基本概念、理论、分析方法和实现方法;
2、增强学生应用VC++编写数字图像处理的应用程序及分析、解决实际问题的能力;
3、尝试将所学的内容解决实际工程问题,培养学生的工程实践能力,提高工科学生的就业能力。
三.设计内容: 1.打开图像: 主要代码:
static char szFilter[]=\文件(*.bmp)|*.bmp||\ //定义过滤文件的类型 象
CString filename;
int ret=dlg.DoModal(); //运行打开文件对方框
if(ret==IDOK) { filename=dlg.GetFileName(); //获取所选择图像的路径
m_dib.LoadFromFile(filename); //加载图像
if(!m_dib.m_bLoaded) //判断是否加载图像成功 { AfxMessageBox(\图像打不开\ }
return;
CFileDialog dlg(TRUE,\ OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);//定义文件对话框对
效果图:
2.水平镜像:把图像的第一列和最后一列调转,第二列和倒数第二列换过来,以此类推下去,直到第nw/2为止。 代码: int temp,i,j; for(j=0;j for(i=0;i temp=m_dib.m_pdata[j*nw+i]; m_dib.m_pdata[j*nw+i]=m_dib.m_pdata[nw-i-1+j*nw]; m_dib.m_pdata[nw-i-1+j*nw]=temp; } 效果图: 3.素描风格:先把灰度值与右下的作对比,如果差值大于一个值则说明这是轮廓,先把非轮廓的位置像素置为黑色,最后对所有像素进行底片化处理 代码: int temp,i,j; for(j=0;j for(i=0;i { temp=m_dib.m_pdata[j*nw+i]-m_dib.m_pdata[(j+1)*nw+i+1]; } if(temp<10) m_dib.m_pdata[j*nw+i]=0; //黑色为0 for(j=0;j for(i=0;i { int gray=m_dib.m_pdata[j*nw+i]; m_dib.m_pdata[j*nw+i]=255-gray; } 果 图: 4图像雾化:在图像中引入一定的随机值,打乱图像中的像素值 代码: int i,j,k,dat; //i表示列,j表行 byte *ptemp=(byte *)new byte[nw*nh]; memset(ptemp,0,nw*nh); for(j=0;j dat=j*nw+i+k; if(dat>=nw*nh) dat=nw*nh-1; ptemp[j*nw+i]=m_dib.m_pdata[dat]; } memcpy(m_dib.m_pdata,ptemp,nw*nh); 效果图: 5.浮雕处理:通过勾画图象轮廓和降低周围像素色值,从而生成具有凹凸感的浮雕效果。其方法是生成一缓冲区,计算当前像素的左上角与右下角的像素值之差,再加上一个补值。将其存储到缓冲区。再将缓冲区的数据逐点替换到图像中并显示出来。 代码: int w=3,i,j; //w为模板宽度 BYTE *p=new BYTE[nw*nh]; memcpy(p,m_dib.m_pdata,nw*nh); for(j=w/2;j { p[j*nw+i]=m_dib.m_pdata[(j-1)*nw+i-1]*(1)+m_dib.m_pdata[(j+1)*nw+i+1]*(-1)+120; } memcpy(m_dib.m_pdata,p,nw*nh); delete []p; 效果图: 6.直方图均衡化 代码: int n[256]={0},g[256]={0}; //定义频数数组n,均衡化每个像素的灰度级的数组g double f[256],t[256]; //定义频率数组f,累加的频率数组t int g_max=0,g_mim=255; int i,j,k,z; for(j=0;j for(i=0;i { z=m_dib.m_pdata[j*nw+i]; n[z]++; } for(k=0;k<=255;k++) //统计每个灰度级出现的频率 f[k]=n[k]/(nw*nh*1.0); //累计灰度级的频率 t[0]=f[0]; for(k=1;k<=255;k++) t[k]=t[k-1]+f[k]; for(j=0;j for(i=0;i g_mim=w for(k=0;k<=255;k++) //利用公式求每个像素均衡化后的灰度级 g[k]=(int)((g_max-g_mim)*t[k]+g_mim+0.5); for(j=0;j for(i=0;i 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库简易photoshop代码数字图像处理实验报告在线全文阅读。
相关推荐: