- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图像处理上机报告
学号:
班级:
姓名:
指导老师
上机目标一:
实现bmp图片的直方图的显示。
目标分析:
要实现目标一,首先需做到的时对bmp图片的读取与显示;
然后才能对图片进行灰度统计,如果是彩色图片可以先将之灰度化再统计,或者直接对其R、G、B三个直方图进行分别显示。
在此我做的是选择将彩色图片进行灰度化然后再统计灰度值,实现直方图的显示。大体算法步骤:
对bmp图读取与显示用的是何兴恒老师的程序(具体分析在下部分)。
如果是彩色图片则对其进行灰度化,然后统计其灰度值。
对图片实行灰度化统计后,进行直方图的显示。
算法及数据结构:
算法步骤1:
Bmp图的读取显示:GetBmpSize(fname,dx,dy)获取图像大小;UINT *buf=new UINT[dx*dy]; ReadBmp(fname,dx,dy,buf);申请一块动态内存buf大小为dx*dy来实现图像读取;MDBUF=buf; mdr-write_video(0,0,dx,dy,buf) ;mdr-swap();将图片放入内存并显示出来。具体函数:onFileOpen();
算法步骤2:
彩色图片的灰度化。定义一个UCHAR型的指针变量c用来指向内存MDBUF;如c[0]、c[1]、c[2]、c[3]分别表示的是第一个像素点的B、G、R、A值。利用灰度化公式0.11*B+0.59*G+0.30R来实现。通过实现dx*dy(图像长宽积)次循环。以下为部分代码:
for (j=0;j=x1*y1;j++)
{
c[0]=c[1]=c[2]=c[3]=(11*c[0]+59*c[1]+30*c[2])/100;
c+=4;
}
然后实现显示。具体在函数是view类的onHthShow()。
算法步骤3的实现:
灰度统计,定义一个int型m_DHist[256]数组,从第一个像素点开始如果其灰度值为i则m_DHist[i]++,直到所有像素点都统计完。然后是直方图显示对话框的制作,用MFC类中的函数Moveto()及Lineto()实现画图,需要注意的一点是对于纵轴来说,先找最大的m_DHist[j]将其画在第j个刻度点处,且将其画满纵轴,后面每个m_DHist值都与最大的灰度值进行百分比的计算,画最高灰度的百分比长度,这样可以使整个直方图更加平衡,可读性更强。具体函数在onDilagHist类中的OnPaint()函数。
上机目标二:
实现图像平滑三个算法及锐化的三个算法。
目标分析:
对于这六种算法的实现,只是模板系数的不同。这里需要实现对彩色图像的处理,只需将图像的RGB值分别处理即可。
大致算法步骤:
分别存每一点的RGB值;为的是方便后面的利用。
从第一个像素点开始,分R、G、B取其值及其周围8个像素点对应的值。这里需对边缘化的像素点进行特殊处理。
进行计算并将此像素点赋予计算值。
算法实现及数据结构:
由于这六种算法的实现步骤一样只是模板系数的不同,因此值具体分析其中一种的实现。
首先是平滑的三个模板:
m[9]={1,1,1,
1,1,1
1,1,1} ;除数9 。
m[9]={1,1,1,
1,2,1
1,1,1} ;除数10 。
m[9]={1,2,1,
2,1,2
1,2,1} ;除数16 。
然后是锐化的3个模板:
m[9]={-1,-1,-1,
-1, 9,-1
-1, -1,-1} ;
m[9]={0,-1,0,
-1,5,-1
0,-1,0} ;
m[9]={1,-2,1,
-2,5,-2
1,-2,1} ;
算法步骤实现:
分别存每一点得像素值。定义一个UCHAR型的指针*c指向内存MDBUF;并定义4个二维数组B[j][i]、G[j][i]、R[j][i]、A[j][i]来实现横坐标i,纵坐标j的像素点BGRA的存放。
然后是某个像素点及其周围像素点的取,这里我分9种情况用if (){}else if(){}……来判断。将一幅图像素点抽象为一个二维网格。具体可用下图表示:
则分四个顶点,上下边缘及左右边缘。
通过GetXS()函数取得某个像素点的B、G、R、A值分别用b[9]、g[9]、r[9]、a[9]来存。
例如用网格表示某个像素点及其周围像素点B值。
b[0] b[1]
您可能关注的文档
最近下载
- 勿忘国耻纪念九一八事变PPT.pptx VIP
- 表彰大会教师代表演讲稿.pptx VIP
- 节能建筑施工中的重点及应对措施.docx VIP
- 小学四年级上册信息科技教案(湖南2025新教材).docx VIP
- 青岛版六年级数学上册第一单元 分数乘法的计算专项试卷 附答案.docx VIP
- “俄语+专业”复合型人才培养模式探析——以江苏师范大学圣理工-中俄学 .pdf VIP
- 为促进意义学习而设计教学盛群力省公开课一等奖全国示范课微课金奖PPT课件.pptx VIP
- 工程量清单和招标控制价编制实施计划方案.docx VIP
- 2023中考语文真题分类汇编:记叙文(散文)阅读试题(含答案解析).docx VIP
- 大白菜种质资源描述规范.PDF VIP
文档评论(0)