[置顶] 自己动手用C++写的图像处理软件(不调用外部包)

说到图像处理软件你会想到什么?Photoshop?CorelDRAW?美图秀秀?还是ACDSee的图像编辑模块?

说到实现数字图像处理算法,你又会想到什么?Matlab?OpenCV?

能不能自己动手用C++写一个小型的图像处理软件,实现一些图像处理算法,而不调用任何外部的包?这个可以有!


多年以前,甚至是主页君还在读书的时候,曾经尝试在VC++ 6.0中编写了最初版本的MagicHouse(一款小型的图像处理软件)。后来当我写了我的第一本图像处理算法书时,我用VC++ 2005更新了它。再后来很长一段时间了,它就一直被压箱底了。我也开始转战Matlab了,毕竟懒惰是推动人类创新的两大动力之一,谁让Matlab那么省时省力呢。但是我们又不得不承认:首先,Matlab相比于C++,在工业应用上其实非常有限。其次,它隐藏了太多的细节,你当然不必为内存管理而操心,也无需为图像文件编解码而犯愁,但一直用Matlab的总是有种“进口加组装”的山寨感。能不能来个“完全自力更生”呢?利用这几天闲暇时间,我在Visual Studio 2013中更新了我的MagicHouse软件。(听说Visual Studio 已经出了2015,Anyway 我想应该无伤大碍)。下面就简单介绍下MagicHouse软件所提供的基本功能。

先来看看GUI先——

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第1张图片


纯C++,没有调用任何外部包,好处是一砖一瓦完全自我打造,坏处是我不能保证所有算法的效率都最优。目前该软件仍然只支持BMPJPG两种格式(自己写编码函数的孩纸伤不起啊)。在浏览模式中程序提供了包括十种图片载入的方式:向下扫描、双重扫描、右侧飞入、双侧飞入、垂直百叶窗、水平百叶窗、垂直栅条、水平栅条、方格效果、落雨效果。下面是一些效果图(原图是西安青龙寺的樱花,博主拍摄)——

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第2张图片

下面是软件中实现了的部分图像处理算法演示:

图像的几何变换之旋转(双线性差值算法)(原图是广州大剧院,由博主的摄影师友人拍摄)

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第3张图片


图像的灰度变换之指数变换

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第4张图片


图像滤镜之马赛克化(原图是广州南沙湿地,由博主拍摄)

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第5张图片


图像滤镜之水雾效果(复合方向)

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第6张图片


图像滤镜之彩色钢笔效果

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第7张图片


图像分析之种子填充算法(原图是缅甸蒲甘的神庙,由博主拍摄)

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第8张图片


正交变换之快速傅立叶变换

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第9张图片


正交变换之图像小波分解(二层)→

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第10张图片


基于Robinson算子的带方向的边缘检测

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第11张图片


多区域轮廓跟踪算法

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第12张图片


图像分割之分水岭算法(原图是澳大利亚大洋路,由博主拍摄)→

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第13张图片


图像增强处理之高斯平滑滤波



采用中值滤波方法对受椒盐噪声污染的图像进行降噪

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第14张图片


高级图像增强处理之保护纹理的降噪算法:基于PM方程的非线性扩散滤波→

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第15张图片


高级图像增强处理之保护纹理的降噪算法:基于全变分的TV降噪算法→

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第16张图片


图像加密算法之 基于Hilbert曲线的图像置乱加密(中图),以及基于Cat映射的图像置乱加密(右图)→

什么都看不到,要的就是这种效果:)

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第17张图片


基于混沌图像融合的密图隐藏算法→

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第18张图片

下面的左图是隐藏处理后的密图(注意为了让读者看清楚里面隐藏了一幅图像,我特意调整参数让它显现出来,事实上是可以做到完全隐藏的,那样图像就会和原模板图像看起来完全一致了)。右图是解密后复原的图像。

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第19张图片       [置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第20张图片


基于形态学方法的图像处理之彩色图像的膨胀→

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第21张图片


以上列出的仅仅是软件中提供的部分功能,限于篇幅,这里就不逐一列出了,日后有时间我也会继续完善软件、实现更多有趣的算法。


特别说明:Magic House 基于VC++ 2005版的基本框架之源代码可以从我的图书《数字图像处理:技术详解与Visual C++实践》的配套光盘中得到。样章试读:http://wenku.it168.com/d_001417193.shtml。现在2013版升级过程中还有一些功能没有调试通过,因为还没完全写完,2013版代码暂无法提供。

[置顶] 自己动手用C++写的图像处理软件(不调用外部包)_第22张图片


===========从来不看博客私信的主页君说:通常我会把我所了解的算法尽可能讲清楚,但除了必要的辅助演示之代码,我不会再额外提供源码下载,无论什么时候人都应该靠自己,只有当你能真正写出代码时,那个代码才是属于你的。===========无冥冥之志者,无昭昭之明,无惛惛之事者,无赫赫之功。===========如果你是图像处理的同道中人,欢迎加入图像处理学习群(529549320)。为避免广告推销等骚扰信息,入群需回答门槛问题(例如:x平方的一阶导数等于多少?)。Cheers~

你可能感兴趣的:(C++,算法,图像处理)