程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 自己動手用C++寫的圖像處理軟件(不調用外部包)

自己動手用C++寫的圖像處理軟件(不調用外部包)

編輯:關於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映射的圖像置亂加密(右圖)→

什麼都看不到,要的就是這種效果:)

\

基於混沌圖像融合的密圖隱藏算法→

\

下面的左圖是隱藏處理後的密圖(注意為了讓讀者看清楚裡面隱藏了一幅圖像,我特意調整參數讓它顯現出來,事實上是可以做到完全隱藏的,那樣圖像就會和原模板圖像看起來完全一致了)。右圖是解密後復原的圖像。

\ \

 

基於形態學方法的圖像處理之彩色圖像的膨脹→

\

以上列出的僅僅是軟件中提供的部分功能,限於篇幅,這裡就不逐一列出了,日後有時間我也會繼續完善軟件、實現更多有趣的算法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved