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

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

图像的几何变换之旋转(双线性差值算法)→

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

图像滤镜之马赛克化→

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

图像滤镜之彩色钢笔效果

图像分析之种子填充算法→

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

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

多区域轮廓跟踪算法


图像分割之分水岭算法→

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

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

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

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

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

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

      

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

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

时间: 2024-10-07 09:36:29

自己动手用C++写的图像处理软件(不调用外部包)的相关文章

自己用C++写的图像处理软件试用版下载

说到图像处理软件你会想到什么?Photoshop?CorelDRAW?美图秀秀?还是ACDSee的图像编辑模块? 说到实现数字图像处理算法,你又会想到什么?Matlab?OpenCV? 能不能自己动手用C++写一个小型的图像处理软件,实现一些图像处理算法,而不调用任何外部的包?这个可以有! Magic House是我多年前编写的一个用来实现一些图像处理算法的演示平台.最初的版本是在VC6下完成的.后来为了引入我新书中,我又在Visual Studio 2005中重写了它.当然这也过去好几年了,最

开源图像处理软件代码

要写好一个图像处理软件,仅靠自己看书是完全不够的,要多方面学习,借鉴前人的经验,要集思广益.多面出击.如今网络发达,图像学的资料其实也到处都是.只是往往个人能力或精力有限,在短时间内无法找到那些也许藏于角落里的金子.本人研究图像至今也历时7年,在慢慢的摸索和累积中也找到了一些相关资料,共享给大家学习. 1. 最著名的开源图像软件:GIMP. 开发语言:C GIMP号称Linux下的PhotoShop,总观其工程,确实达到了PhotoShop早期版本的功能.三大利器:选区.图层.蒙板一应俱全,滤镜

Adobe Photoshop Lightroom v5.4 MacOSX 专业摄影师图像处理软件

AirRadar 2.3.3 MacOSX Viscosity 1.4.8 MacOSX Iridient Developer 2.3.4 Mac OS X SideFX Houdini FX 13.0.376 Win/Mac/Linux Vinotekasoft Vinoteka 3.3.5 Multilingual MacOSX Firetask 3.6.1 Multilingual MacOSX iBackup Viewer Pro 2.70 MacOSX DivX Plus Pro 10

Qt写的截图软件包含源代码和可执行程序

http://blog.yundiantech.com/?log=blog&id=14 Qt写的截图软件包含源代码和可执行程序 http://download.csdn.net/download/qq214517703/5240638

在现有的图像处理软件中融合dxf格式输出

在现有的图像处理软件中融合dxf格式输出 dxf格式是autocade的支持格式.如果将现有图像识别的结果导出到dxf格式,就能够使用autocad的强大功能进行后续处理. dxf的格式比较复杂,开源支持库为libdxf,使用起来也比较复杂.经过一段时间融合,我将其修改为vs2012(mfc)能够直接调用的模式. 包含的类库都保存在一个文件夹下 调用方式 void testWriting() { DL_Dxf* dxf = new DL_Dxf(); DL_Codes::version expo

3D图形图像处理软件HOOPS介绍及下载

HOOPS 3D Application Framework(以下简称HOOPS)是建立在OpenGL.Direct3D等图形编程接口之上的更高级别的应用程序框架.不仅为您提供强大的图形功能,还内嵌了多边形优化和大模型处理等技术,能够大大提高 3D可视化的性能.同时,HOOPS开发包中提供的大量应用程序级的实例源码,帮助您在很短的时间内搭建出商业级的3D图形应用程序. HOOPS 3D Application Framework (HOOPS/3dAF) 3D图形图像处理软件为当今许多主流 3D

RAW图像处理软件有哪些?哪款RAW图像处理软件好用?有什么区别?

各位小主还在找图片处理的软件吗?还不知道这些软件之间有哪些差别?今天小编就给大家推荐几款好用的raw图像处理软件,可以让您针对您的文件进行高质量的图像编辑,赶紧来种草吧! https://www.macdown.com ON1 Photo RAW 2019 for Mac将包含大量新功能和技术,以及简洁,强大且易于学习的简化工作流程.值得注意的新功能包括图层的新的非破坏性 工作流程,图层的自动对齐,焦点堆叠,新的肖像模块,新的AI驱动的屏蔽工具,新的文本工具,新的数字资产管理更新等.ON1 Ph

C#写COM组件,JS调用控件

1.c#2005中新建项目,类型为类库,项目名为AddCom确定. 配置:右键点击解决方案资源管理器中的AddCom,选择“属性”,选择“生成”,选择“为COM Interop注册(_P)” 2.打开AssemblyInfo.cs文件,设置[assembly: ComVisible(true)],如果不改则不能被其他程序调用 3.编写com组件会用到guid(全球唯一ID),编写com组件必须要用到.c#会默认生成一个放在AssemblyInfo.cs,如没有生成,网上下一个生成guid的软件,

C#写的dll跨语言调用

C#写的dll为非标准的windows下dll,故 一般其他语言不能直接调用,当然基于.net平台下的编程语言是可以调用,要让其他语言调用C#写的dll一般通过webservice服务或者是Com 方式.经过在网上找资料以及自身的实践发现可以通过以下方式在Delphi和VB语言中调用. 1.编写C#写dll,用VS新建一个类库项目TestDll,源码如下: using System; using System.Collections.Generic;using System.Text;using