图像识别和处理期中报告_第1页
图像识别和处理期中报告_第2页
图像识别和处理期中报告_第3页
图像识别和处理期中报告_第4页
图像识别和处理期中报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、云南大学软件学院期中课程报告Middle Course ReportSchool of Software, Yunnan University个人成绩学号姓名成绩20131120272邓飞武学期:2015秋季学期 课程名称:图像识别与处理任课教师:郑智捷 题目: 图象识别和处理期中作业姓名:邓飞武 学号: 20131120272 联系电话电子邮件:1359942848 完成提交时间:2015年11月6日作业截止时间:2015年11月6日 图像识别和处理1、 实现要求1.1实现功能利用选定的语言实现一个图像处理平台,包括以下功能:1. 至少能读入三种以上的数值图像文件2

2、. 显示图像3. 显示彩色直方图4. 对图像进行扩展校正5. 对数校正处理6.指数校正处理1.2报告文档要求1. 设计框图2. 界面设计3. 操作手册2、 项目实现过程 实现平台:VS2010 设计框图 界面设计运行界面设计框图打开文件直方图图像校正彩色直方图图扩展校正对数校正指数校正界面设计 3 操作手册3.1 三种图像的打开运行程序,如下图所示:打开文件,选择符合规定格式的图片打开(bmp,jpg,gif三种格式中的一种)。3.2 彩色直方图读入图片后点击直方图中的彩色直方图(红绿蓝三种色彩的直方图)原图3.3图像扩展校正选择图像校正中的扩展校正选择对数校正选择指数校正,处理结果如图所示:

3、 3.4 相关提示消息当在没有打开图像的情况下,点击任何功能按钮,会弹出如图所示的对话框提示信息(没有图片输入);在“项目信息”一栏中会显示个人的一些信息。4、项目小结 在这次作业中,通过自己的努力学到了不少关于图像处理上的知识。无论在图像处理的理论方面还是在程序的编写上都有了很大的进步,也看到了自己理论知识的不足,以及在程序实现上的无力,通过对本次作业的总结,以后还要继续进行学习,提高自己在图像处理方面的能力。不足的是,伽玛校正,元胞自动机模块未能在此次作业中实现。5、附件(源代码)using System;using System.Collections.Generic;using Sys

4、tem.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Drawing.Imaging;namespace ImageProcess public partial class MainFrame : Form public MainFrame() InitializeComponent(); private void MainFrame_Load(object sender, EventA

5、rgs e) private void 打开ToolStripMenuItem_Click(object sender, EventArgs e) /创建一个打开文件对话框 OpenFileDialog opnDlg = new OpenFileDialog();/设置一个图像文件过滤器,只有规定格式的图片能读取 opnDlg.Filter = "All Image files|*.bmp;*.gif;*.jpg; Bitmap Files(*.bmp;*.gif;*.jpg;) opnDlg.Title = "ImageViewer: Open Image File&qu

6、ot; opnDlg.ShowHelp = true;/如果选择对了格式,则打开图像 if (opnDlg.ShowDialog() = DialogResult.OK) /读取当前文件名 curFileName = opnDlg.FileName; /创建一个图像对象 curImage = Image.FromFile(curFileName); /将图像对象显示到窗口中 pictureBox1.Image = curImage; pictureBox1.Refresh();/ Activate scrolling private void 另存ToolStripMenuItem_Click

7、(object sender, EventArgs e) /如果图像已被创建 if (curBitmap = null) return; /打开另存为对话框 SaveFileDialog saveDlg = new SaveFileDialog(); saveDlg.Title = "Save Image As" saveDlg.OverwritePrompt = true; saveDlg.CheckPathExists = true; saveDlg.Filter = "Bitmap File(*.bmp)|*.bmp|" + "Gif F

8、ile(*.gif)|*.gif|JPEG File(*.jpg)|*.jpg" saveDlg.ShowHelp = true; /如果选择了保存文件 if (saveDlg.ShowDialog() = DialogResult.OK) /得到用户选择的文件名 string fileName = saveDlg.FileName; /得到文件扩展名 string strFilExtn =fileName.Remove(0, fileName.Length - 3); /按照不同文件格致保存 switch (strFilExtn) case "bmp": cur

9、Bitmap.Save(fileName, ImageFormat.Bmp); break; case "jpg": curBitmap.Save(fileName, ImageFormat.Jpeg); break; case "gif": private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) Application.Exit(); private void 彩色直方图ToolStripMenuItem_Click(object sender, EventArgs e) i

10、f (curImage = null) MessageBox.Show("没有图片读入!"); return; imageWidth = curImage.Width; imageHeight = curImage.Height; this.curBitmap = new System.Drawing.Bitmap(curImage); /初始化保存每个像素GRB分量的数组 this.pixelR = new intimageWidth, imageHeight; this.pixelG = new intimageWidth, imageHeight; this.pixe

11、lB = new intimageWidth, imageHeight; /初始化保存每个灰度级别上RGB分量的像素个数 this.colorB=new int256; this.colorR=new int256; this.colorG=new int256; for (int i = 0; i < imageWidth; i+) for (int j = 0; j < imageHeight; j+) Color curColor = curBitmap.GetPixel(i, j); pixelRi, j = curColor.R; pixelGi, j = curColo

12、r.G; pixelBi, j = curColor.B; for (int m = 0; m < 256;m+) for (int n = 0; n < imageWidth;n+) for (int k = 0; k < imageHeight; k+) /统计不同RGB灰度值的像素个数 if (m = pixelRn, k) colorRm+; if (m = pixelGn, k) colorGm+; if(m=pixelBn, k) colorBm+; pictureBox1.Image = this.curBitmap; this.pictureBox1.Refr

13、esh(); colorfulHistogram = new ColorfulHistogram(colorR, colorG, colorB); colorfulHistogram.Visible = true; /* */ private void 扩展校正ToolStripMenuItem_Click(object sender, EventArgs e) if (curImage= null) MessageBox.Show("没有图片读入!"); return; imageWidth = curImage.Width; imageHeight = curImage

14、.Height; this.curBitmap = new System.Drawing.Bitmap(curImage); this.pixel = new intimageWidth, imageHeight; this.modifyLevel=new int256; this.GrayLevel = new int256; for (int i = 0; i < imageWidth; i+) for (int j = 0; j < imageHeight; j+) Color curColor = curBitmap.GetPixel(i, j); gray = (int)

15、(curColor.R + curColor.G + curColor.B) / 3; curBitmap.SetPixel(i, j, Color.FromArgb(255, gray, gray, gray); pixeli, j = gray; for (int m = 0; m < 256; m+) for (int r = 0; r < imageWidth; r+) for (int v = 0; v < imageHeight; v+) if (m = pixelr, v) GrayLevelm+; int max=0; int maxGray=0; for (

16、int j = 0; j < GrayLevel.Length ; j+) if (GrayLevelj > max) max = GrayLevelj; maxGray = j; int random=0; Random ran = new Random(); for (int m = 0; m < maxGray; m+) for (int k = 0; k < imageWidth; k+) for (int g = 0; g < imageHeight; g+) if (m = pixelk, g) random+; if (random = 10) in

17、t color = m - ran.Next(10, 30); curBitmap.SetPixel(k, g, Color.FromArgb(255, color<0 ? 10: color, color <0 ? 10: color, color<0 ? 10 : color); random = 0; int Random=0; for (int v = maxGray; v < GrayLevel.Length; v+) for (int x = 0; x < imageWidth; x+) for (int y = 0; y < imageHeig

18、ht; y+) if (v = pixelx, y) Random+; if (Random = 10) int color = v+ran.Next(0, 15); curBitmap.SetPixel(x, y, Color.FromArgb(255, color > 255 ? 255 : color, color > 255 ? 255 : color, color > 255 ? 255 : color); Random = 0; for (int t = 0; t < 256; t+) for (int a = 0; a < imageWidth; a

19、+) for (int b = 0; b < imageHeight; b+) Color color = curBitmap.GetPixel(a,b); int colorR = color.R; int colorG = color.G; int colorB = color.B; int modifyGray=(colorR+colorG+colorB)/3; if (t = modifyGray) modifyLevelt+; pictureBox1.Image = this.curBitmap; pictureBox1.Refresh(); histogram = new H

20、istogram(modifyLevel); histogram.Visible = true; private void 对数校正ToolStripMenuItem_Click(object sender, EventArgs e) if (curImage = null) MessageBox.Show("没有图片读入!"); return; imageWidth = curImage.Width; imageHeight = curImage.Height; this.curBitmap = new System.Drawing.Bitmap(curImage); C

21、olor, color= new ColorimageWidth, imageHeight; this.GrayLevel = new int256; for (int i = 0; i < imageWidth; i+) for (int j = 0; j < imageHeight; j+) Color curColor = curBitmap.GetPixel(i, j); /得到R分量 int R = curColor.R; /对R分量进行对数变化 int indexR =(int)( R + 0.8 * R * (255 - R) / 255); /得到G分量 int G

22、 = curColor.G; /对G分量进行对数变化 int indexG =(int)(G + 0.8 * G * (255 - G) / 255); /得到B分量 int B = curColor.B; /对B分量进行对数变化 int indexB =(int) (B+ 0.8 * B * (255 - B) / 255); /将变化后的每个像素重新写入当前位图文件 curBitmap.SetPixel(i, j, Color.FromArgb(255, indexR, indexG,indexB); colori, j = Color.FromArgb(255, indexR, inde

23、xG, indexB); /* for (int m = 0; m < 256; m+) for (int r = 0; r < imageWidth; r+) for (int v = 0; v < imageHeight; v+) if (m = colorr, v) GrayLevelm+; */ this.pictureBox1.Refresh(); pictureBox1.Image = this.curBitmap; /指数校正和对数校正的原理相同,只是改变像素RGB分量的方法改成指数变化 private void 指数校正ToolStripMenuItem_Click(object sender, EventArgs e) if (curImage = null) MessageBox.Show("没有图片读入!"); return; imageWidth = curImage.Width; imageHeight = curImage.Height; this.curBitmap = new System.Drawing.Bitmap(curImage); Color, color = new Co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论