一、專案簡介
MagicHouse 是一款純 C++ 編寫的圖像處理軟件,**零外部庫依賴**(含 BMP/JPG 編解碼自行實現)。開發跨越 VC6 → VS2005 → VS2013,算法涵蓋幾何變換、灰度變換、空間濾鏡、頻域變換、形態學、加密隱寫、去噪增強等模塊。
二、核心功能模塊與效果展示
1. 圖片瀏覽特效(10 種載入動畫)
- 向下掃描、雙重掃描、左右飛入、百葉窗、柵條、方格、落雨等。
2. 幾何變換
3. 灰度/伽馬/指數/對數變換
4. 空間濾鏡(特效類)
- 馬賽克、水霧、彩色鋼筆、浮雕、油畫、素描、鏡面反射等 20+ 效果。
5. 圖像分析與分割
- 種子填充、分水嶺分割、多區域輪廓跟蹤、邊緣檢測(Sobel/Canny/Laplacian)。
6. 正交變換
- FFT 快速傅立葉變換(幅度/相位圖)、二維小波分解(Haar/Daubechies,多層)。
7. 高級去噪增強
- PM 非線性擴散濾波(保邊平滑)、TV 全變分去噪(ROF 模型)。
8. 圖像加密與隱寫
- Hilbert 曲線置亂、Arnold Cat Map 置亂、混沌融合隱藏(密圖可視性可調)。
9. 形態學處理
- 膨脹/腐蝕/開閉運算、骨架提取、頂帽/黑帽變換,支持彩色圖像通道獨立處理。
三、技術亮點
- 自研編解碼:BMP 輕鬆,JPG 基於 Huffman + DCT + 量化表完整實現,無 libjpeg 依賴。
- 算法直譯:所有濾波核、迭代公式、優化目標函數直接對應教科書數學定義,便於教學驗證。
- 內存管理:手動
new/delete 配合 RAII 封裝,無智能指針依賴(C++11 前版本)。
- GUI 框架:MFC 對話框模式,消息泵驅動,繪製用
CDC::SetPixel/BitBlt。
四、代碼結構概覽
MagicHouse/
├── Core/ # 圖像數據結構、基礎運算、文件 IO
├── Transform/ # 幾何、灰度、頻域、小波
├── Filter/ # 空間濾鏡、特效、形態學
├── Analysis/ # 分割、輪廓、邊緣、填充
├── Enhance/ # PM 擴散、TV 去噪、自適應增強
├── Crypto/ # 置亂加密、混沌隱寫、水印
└── UI/ # MFC 對話框、預覽、參數面板
五、獲取與編譯
專案托管於個人 GitHub(文末鏈接),需 VS2013+,MFC 靜態鏈接。編譯即可運行,無第三方庫配置。
六、後續規劃
- 補全 PNG/TIFF 編解碼。
- 引入 SIMD 內聯優化核心迴圈。
- 移植至 Qt 跨平台。
- 開放插件接口,支持 Python 腳本調用內核算法。
七、結語
「造輪子」是理解圖像處理本質的最佳路徑。MagicHouse 雖非商業級,但每一行算法代碼都經過數學推導驗證,歡迎同好交流改進。