毕业论文的点点滴滴(一)
来源:互联网 发布:韩国扫码查真伪软件 编辑:程序博客网 时间:2024/05/18 01:27
本人本科小菜一个,南方某山中大学就读,今年大四,临近毕业,哎,论文虐我千百遍,我对论文如初恋,最近都在死理拼命赶,但是无奈结果还是那样,出不来,于是乎,想在这里愤青一把。
毕业论文做的是交通图像处理题目---基于视频图像处理的交通标线识别,其实一开始想做电动车信息采集系统的开发的,而且那个系统我在大二大三参加本田节能竞技大赛的时候有实际开发过,有了差不多两年的积累,但是后来想到要去广汽,那么就必须学点高端大气上档次的东西啊,于是乎直接扭头,奔向本院的老师,学习图像处理相关知识。结缘图像处理是在大三的下一个学期,那个时候很多人都准备忙着保研,出国,找工作。对于选修课大伙都是兴趣不高,认为修个学分就可以了,于是在修读图像处理这门课程的时候,班里的学习氛围不高,本来选修的人数就少得可怜,但是每次居然去的还只有那么几个,虽说这样子,但是我还是还认真地修读了这门课程,而且收益匪浅啊。
选择了图像处理,现在想想感觉走到了一个不归路,╮(╯▽╰)╭,因为这条路远远没有自己想象的那么容易,实则坎坷啊。
路漫漫其修远兮,吾将上下而求索!
每次遇到困难,心里总是用这一句话来勉励自己,哎,谁叫自己选了呢!既然选择了,就应该义无反顾地往前走。
还是回归到主题了吧,写论文。。。。。。。。。。。。。。。
图像处理的前提,图像预处理,一开始就查找了很多关于图像预处理的论文,包括图像灰度化、图像增强、直方图均衡化等一些相关论文,其中基于模糊集理论的图像直方图均衡化和基于RGB模型的直方图均衡化效果还是比较理想的。
基于RGB模型的直方图均衡化程序如下:
private void button10_Click(object sender, EventArgs e) //基于RGB模型的直方图均衡化 { myTimer.ClearTimer(); myTimer.Start(); //开始计算时间 if (curBitmap != null) { Rectangle rect = new Rectangle(0, 0, curBitmap.Width, curBitmap.Height); System.Drawing.Imaging.BitmapData bmpData = curBitmap.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadWrite, curBitmap.PixelFormat); IntPtr ptr = bmpData.Scan0; int bytes = curBitmap.Width * curBitmap.Height; byte[] rgbValues = new byte[bytes * 3]; System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes * 3); double[] hue = new double[bytes]; double[] sat = new double[bytes]; byte[] inten = new byte[bytes]; double r, g, b; for (int i = 0; i < bytes; i++) { r = rgbValues[i * 3 + 2]; g = rgbValues[i * 3 + 1]; b = rgbValues[i * 3]; double theta = Math.Acos(0.5 * ((r - g) + (r - b)) / Math.Sqrt((r - g) * (r - g) + (r - b) * (g - b) + 1)) / (2 * Math.PI); hue[i] = ((b <= g) ? theta : (1 - theta)); sat[i] = 1.0 - 3.0 * Math.Min(Math.Min(r, g), b) / (r + g + b + 1); inten[i] = (byte)((r + g + b) / 3); } inten = equalization(inten); for (int i = 0; i < bytes; i++) { r = rgbValues[i * 3 + 2]; g = rgbValues[i * 3 + 1]; b = rgbValues[i * 3]; hue[i] = hue[i] * 2 * Math.PI; if (hue[i] >= 0 && hue[i] < 2 * Math.PI / 3) { b = inten[i] * (1 - sat[i]); r = inten[i] * (1 + sat[i] * Math.Cos(hue[i]) / Math.Cos(Math.PI / 3 - hue[i])); g = 3 * inten[i] - (r + b); } else if (hue[i] >= 2 * Math.PI / 3 && hue[i] < 4 * Math.PI / 3) { r = inten[i] * (1 - sat[i]); g = inten[i] * (1 + sat[i] * Math.Cos(hue[i] - 2 * Math.PI / 3) / Math.Cos(Math.PI - hue[i])); b = 3 * inten[i] - (r + g); } else //if (h >= 4 * Math.PI / 3 && h <= 2 * Math.PI) { g = inten[i] * (1 - sat[i]); b = inten[i] * (1 + sat[i] * Math.Cos(hue[i] - 4 * Math.PI / 3) / Math.Cos(5 * Math.PI / 3 - hue[i])); r = 3 * inten[i] - (g + b); } if (r > 255) r = 255; if (g > 255) g = 255; if (b > 255) b = 255; rgbValues[i * 3 + 2] = (byte)r; rgbValues[i * 3 + 1] = (byte)g; rgbValues[i * 3] = (byte)b; } System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes * 3); curBitmap.UnlockBits(bmpData); myTimer.Stop(); textBox1.Text = myTimer.Duration.ToString("####.##"); Invalidate(); } } 均衡前后对比,效果非常明显,
后来,在进行边缘检测的时候,我发现基于RGB模型的sobel处理起来,可以把灰度图化-直方图均衡化--中值滤波三个步骤省了,是在是非常不可思议。
现在做到Hough直线检测那块了,但是Hough变换思想有点混乱,所以还没有编程实现~~~
- 毕业论文的点点滴滴(一)
- 学习live555的点点滴滴(一)
- 浅析表单设计的点点滴滴(一)
- HIVE迁移的点点滴滴(一)
- SCA点点滴滴(一)
- 安装gentoo的点点滴滴(一)
- 关于JVM点点滴滴(一)
- 开始写博客---记录测试生活的点点滴滴(一)
- 自动测试之ruby和cucumber的点点滴滴(一)
- 点点滴滴(一)
- 毕业论文:基于.net的OA项目的管理、过程与研发(一)
- 撰写毕业论文中word公式编辑器的学习使用(一)——录制宏
- 生物信息记录点点滴滴(一)
- Python的点点滴滴(ctypes)
- 毕业论文设计(一)
- 远程教育网(在学校时的毕业论文) 一
- 毕业论文必备:免费论文网站便捷导航(一)
- 毕业论文中的“页眉页脚”设置(经验一)
- Raysoft.Framework.Date_Time.DateConvertHelper
- socket高并发
- android基本架构
- Azure 网站的新增功能:可配置的环境变量
- 【Python】logging结合decorator模式实优化日志输出
- 毕业论文的点点滴滴(一)
- NYOJ244&南阳理工oj_244
- VMWare安装liunx教程(ubuntu)
- Python入门教程-02 变量
- Java虚拟机详解
- PHP视频教程
- 黑马程序员----.net 高级技术之程序集与反射的使用
- 惊 百度site域名只显示主域名 网站快照倒退到1995年
- java Class类概述