Windows下編譯測試BM3D演算法效果

來源:互聯網
上載者:User

一.BM3D及代碼簡單介紹

目前公認比較好的去噪演算法。

 

原始碼bm3d_src.zip(http://www.ipol.im/pub/art/2012/l-bm3d/)

 

This source code provides an implementation of the BM3D image denoising.

 

The code is compilable on Unix/Linux and Mac OS.

 

- Compilation.

Automated compilation requires the make program.

 

- Library.

This code requires the libpng library and the fftw library.

 

- Image format.

Only the PNG format is supported.

 

二.Windows下編譯使用

平台:win7+VS2010

建立bm3dtest控制台工程,並把bmd3d_src加入到工程中。通過前面介紹可知,BM3D需要png庫和fftw庫,因此需要加入這些第三方庫。

 

1.fftw3庫配置

下載fftw-3.3.3-dll32.zip (http://www.fftw.org/install/windows.html)

按照說明,產生dll檔案即可(其中已經包含了lib檔案)

添加lib庫

../fftw-3.3.3-dll32/libfftw3-3.lib

../fftw-3.3.3-dll32/libfftw3f-3.lib

../fftw-3.3.3-dll32/libfftw3l-3.lib

適當修改其中代碼,部分如:

   //! Allocate plan for FFTW library

         //fftwf_plan plan_2d_for_1[nb_threads];

 //   fftwf_plan plan_2d_for_2[nb_threads];

 //   fftwf_plan plan_2d_inv[nb_threads];

         // modified by loadstar

         fftwf_plan* plan_2d_for_1 = new fftwf_plan[nb_threads];

         fftwf_plan* plan_2d_for_2 = new fftwf_plan[nb_threads];

         fftwf_plan* plan_2d_inv = new fftwf_plan[nb_threads];

 

2.
在VC下如何使用標頭檔unistd.h

標頭檔unistd.h是Linux/Unix的系統調用,包含了許多UNIX系統服務函數原型,如open、read、write、_exit、getpid等函數。在linux下能夠編譯通過的包含此標頭檔的程式,在VC下編譯時間出現了如下問題

 

          fatal error C1083: Cannot open include file: 'unistd.h': No such file or directory

 

         其實解決這個問題的方法並不難,只要在你的預設庫檔案夾下(例如D:\Program Files\Microsoft Visual Studio\VC98\INCLUDE\)添加一個unistd.h檔案即可,其內容如下:

 

         #ifndef _UNISTD_H

         #define _UNISTD_H

 

         #include <io.h>

         #include <process.h>

 

         #endif /* _UNISTD_H */

        

         這樣在重新編譯包含unis.h的程式就能通過了

 

3. png庫編譯

gzip,zlib,以及圖形格式png,使用的是同一個壓縮演算法deflate。

 

libpng1250(http://www.libpng.org/pub/png/libpng.html)檔案夾中包含了zlib工程檔案(lpng1250\projects\visualc71檔案夾下)libpng項目解決方案中包含了工程libpng.vcproj,
pngtest.vcproj, zlib.vcproj,但是該zlib工程編譯時間有些問題,懶得解決了,直接使用lpng1513版本中的zlib工程。

下載lpng1513.zip(http://www.libpng.org/pub/png/libpng.html)解壓,通過查看zlib.vcproj檔案,可以看出該工程的目錄位置:..\..\..\zlib-1.2.5。在該目錄位置解壓出zlib127.zip(http://www.zlib.net/),因為其中使用zlib-1.2.5,把zlib127名稱修改為zlib-1.2.5即可。在lpng1513中用vs2010開啟解決方案libpng.sln。用Debug編譯其中的zlib工程,產生lpng1513\projects\vstudio\Debug\zlib.lib檔案。(該版本下讀取png圖片有問題,png庫仍然採用lpng1250)

 

開啟lpng1250工程(lpng1250\projects\visualc71\libpng.sln)

加上zlib標頭檔:

在屬性-C/C++-常規-附加庫包含目錄加上..\..\..\zlib-1.2.5(如果有其他,修改之)

選擇LIB Debug編譯,則產生lpng1250\projects\visualc71\Win32_LIB_Debug\libpngd.lib

 

在bm3dtest工程:

加上標頭檔

在屬性-C/C++-常規-附加庫包含目錄添加

..\lpng1250

..\zlib-1.2.5

 

項目包含.lib檔案所在的目錄:

屬性--連結器--常規--附加庫目錄

..\lpng1250\projects\visualc71\Win32_LIB_Debug

..\lpng1513\projects\vstudio\Debug

添加lib檔案

屬性--連結器--輸入--附加依賴項(libpngd.lib zlib.lib)

在產生的bm3dtest.exe目錄中加入相應的dll檔案即可(fftw),完成。找個圖片試試效果吧。

 

三.後記:

1. 參考

Windows下zlib庫和libPng庫的編譯和使用

http://blog.sina.com.cn/s/blog_659b2b3201013y9k.html

 

2.直接使用lpng1513版本產生的libpng庫,讀取映像時出現錯誤

 

使用libpng1250版本中zlib工程編譯時間出現錯誤。

PNG格式只是為了測試演算法效果的,這些問題就不花功夫了。哪位如果有時間找到問題的答案,歡迎告知:)

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.