从零开始学习MFC与数字图像处理(-)
2013-06-10 14:13
537 查看
首先,作者简介:本小白从事视频监控行业,主要作为一名调试工程师,涉及,ISP debug,sensor debug,embed linux driver debug ,在工作工程中对图像处理有浓厚的兴趣,本人对sensor有一定的认识,对底层的图像ISP调试也有一些认识,这两点就是我的工作内容,想要更加深刻的认识必须要略知其中的一些算法,想要略知算法,在学习很认识的工程当中就不能拿出略知的心态来对待,所以有了这么一出“从零开始学习MFC与数字图像处理”,本小白,C语言的级别是“可以使用”,MFC没有正式的接触过,数字图像处理与作者的大学专业相去甚远,没有任何一个师傅指点过,如有不对之处,请大家不吝指点,如有大家看着实在太小白之处,请不吝指点。OK
,背景工作交代完成,带着我要达到的目的与兴趣,go!
图像处理的基本内容之一图像增强,作者在接触视频监控时,其经常遇见整幅图像对比度不够、噪声过大、边缘发虚的情况,这些内容我们统称为图像的增强,
我们首先完成其中的对比度选项,高对比度的图像可提高整幅画面的通透性,但是易损失暗处细节,至于如何达到想要的效果,需要权衡。对比度的提升,有两种方式:
(特殊说明之前,小白均指的是 8bit位图)
1.运用直方图 2. 灰度映射
直方图是统计整幅图像的灰度信息,如果你安装了photoshop,在图像信息的那一个窗口,就有直方图这一项。直方图的分布,代表了整幅图像的大体灰度走势,比如如果中间直方图较大,那么整幅图像整体发灰,没有太白 或者太黑的地方,如果两端信息大,则说明这幅图像有对比很明显的地方。直方图均衡化,就是通过一种方式,让图像的灰度信息整个拉开,不要只分布在那几点上。
第一篇,建立一个MFC单文档工程,完成直方图均衡化
1.MFC 建立单文档工程,new -> mfc exe -> 工程名起好,在这里我起名“drvimg”(driveimage),选择单文档,完成。
2.添加图像增强 菜单项,完成3个非模态对话框的显示,绘制直方图信息。
3.直方图均衡化过程:
完成后的结果如这样:
靠,我竟然不会插入图片。
靠,我竟然不会插入源码,算了 网盘同步更新源码及测试图片:
http://www.kuaipan.cn/file/id_50878569135477678.htm
访问密码:IwmDxs
先打开测试图片 ,如test.bmp ,然后点图像增强
PS : 第一次写博客,想写好博客也不是一件简单的事
,背景工作交代完成,带着我要达到的目的与兴趣,go!
图像处理的基本内容之一图像增强,作者在接触视频监控时,其经常遇见整幅图像对比度不够、噪声过大、边缘发虚的情况,这些内容我们统称为图像的增强,
我们首先完成其中的对比度选项,高对比度的图像可提高整幅画面的通透性,但是易损失暗处细节,至于如何达到想要的效果,需要权衡。对比度的提升,有两种方式:
(特殊说明之前,小白均指的是 8bit位图)
1.运用直方图 2. 灰度映射
直方图是统计整幅图像的灰度信息,如果你安装了photoshop,在图像信息的那一个窗口,就有直方图这一项。直方图的分布,代表了整幅图像的大体灰度走势,比如如果中间直方图较大,那么整幅图像整体发灰,没有太白 或者太黑的地方,如果两端信息大,则说明这幅图像有对比很明显的地方。直方图均衡化,就是通过一种方式,让图像的灰度信息整个拉开,不要只分布在那几点上。
第一篇,建立一个MFC单文档工程,完成直方图均衡化
1.MFC 建立单文档工程,new -> mfc exe -> 工程名起好,在这里我起名“drvimg”(driveimage),选择单文档,完成。
2.添加图像增强 菜单项,完成3个非模态对话框的显示,绘制直方图信息。
3.直方图均衡化过程:
int showtoav(char * ptr,int width, int height) { int i,j; int av[256]={0}; char newav[256]={0}; unsigned char * tmp; int savewidth = WIDTHBYTES(width * 8); for(i=0;i<width;i++) //直方图统计 { for (j=0;j<height;j++) { tmp = (unsigned char *)ptr + i*savewidth +j; av[*tmp]++; } } for (i=0;i<256;i++) //通过概率密度函数,新的灰度值计算 { int count=0; for (j=0;j<=i;j++) { count += av[j]; } newav[i] = BYTE(count * 255 /width /height); } for(i=0;i<width;i++) //修改图像的值 { for (j=0;j<height;j++) { tmp = (unsigned char*)(ptr + i*savewidth +j); *tmp = newav[*tmp]; } } return 0; }
完成后的结果如这样:
靠,我竟然不会插入图片。
靠,我竟然不会插入源码,算了 网盘同步更新源码及测试图片:
http://www.kuaipan.cn/file/id_50878569135477678.htm
访问密码:IwmDxs
先打开测试图片 ,如test.bmp ,然后点图像增强
PS : 第一次写博客,想写好博客也不是一件简单的事
相关文章推荐
- (转)Opencv (Opencv2)结合MFC学习数字图像处理【3】---显示图片
- Opencv (Opencv2)结合MFC学习数字图像处理【0】---开篇
- Opencv (Opencv2)结合MFC学习数字图像处理---图片解码(2)
- Opencv (Opencv2)结合MFC学习数字图像处理---图片解码(3)
- Opencv (Opencv2)结合MFC学习数字图像处理【3】---显示图片
- Opencv (Opencv2)结合MFC学习数字图像处理---显示图片
- Opencv (Opencv2)结合MFC学习数字图像处理【2】---图片解码
- 从零开始学习数字图像处理——第一天(什么是数字图像处理,数字图像处理的基本步骤)
- Opencv (Opencv2)结合MFC学习数字图像处理【1】---建立工程
- Opencv (Opencv2)结合MFC学习数字图像处理---图片解码(1)
- 基于mfc数字图像处理的小软件pdd-量化灰度图像
- 【数字图像处理学习笔记之六】基本灰度级形态学算法
- 数字图像处理学习1
- 数字图像处理学习笔记三
- 系统学习数字图像处理之基础
- 数字图像处理的学习
- 【数字图像处理】五.MFC图像点运算之灰度线性变化、灰度非线性变化、阈值化和均衡化处理具体解释
- 系统学习数字图像处理之频域滤波
- 二 图像处理opencv mfc学习
- 数字图像处理的就业前景与学习资源