1. 程式人生 > >計算機視覺和模式識別(一)

計算機視覺和模式識別(一)

計算機視覺和模式識別

計算機視覺和影象處理是一個令很多人充滿興趣的計算機領域,它不僅涉及到很多精妙和令人稱讚的數學推導和漂亮的程式碼,更是應用到我們生活的方方面面,簡單如Photoshop、美圖秀秀,複雜於相機校準、人臉識別、處理視訊等。
時隔很久沒有寫部落格了,以前寫部落格的時候總感覺自己欠缺很多,現在發現在計算機專業讀書,每一年都會對自己所學的東西有了新的理解。這次的部落格系列就是分享自己在影象處理和計算機視覺方面的理解和體會,希望大家Have fun with image!


1.什麼是計算機視覺和影象處理?

Computer vision is an interdisciplinary field that deals with how computers can be made for gaining high-level understanding from digital images or videos. From the perspective of engineering, it seeks to automate tasks that the human visual system can do.

[ 維基百科 ]

簡而言之

  • 計算機視覺就是獲取影象的高層資訊,看起來讓計算機和人類視覺系統一樣。
  • 影象處理通常是獲取影象的低層或者中層資訊,對影象進行直接的處理。

這裡寫圖片描述

2.我們使用什麼進行影象處理?

C/C++大家都知道是影象處理包括計算機圖形學中常用的程式語言,原因呢,想必大家都懂,就是效率高。在複雜的圖形影象處理中這一點顯得更重要。因此在接下來的系列中我所介紹的圖形影象處理都是採用Win10平臺下VisualStudio2015 Community版本的VC編譯環境這裡寫圖片描述當然大家在理解演算法的過程後,可以使用諸如Matlab、Java等其他程式語言來寫自己的演算法程式。

工欲善其事,必先利其器。如果大家有過影象處理或者影象操作的程式設計經驗都知道,如果沒有一些輔助的庫檔案,那麼編寫影象處理演算法的程式碼將會有很多冗餘繁雜的讀取儲存影象的程式碼,這些程式碼不利於我們對演算法的理解和程式的快速編寫。因此我們常使用一些輔助的影象處理庫,來簡化我們的程式碼編寫,比較有名的就是OpenCv但是在這裡要為介紹的是另外一個更為簡單(配置簡單、操作簡單)的影象處理庫CImg


3.什麼是CImg?

簡而言之,CImg是一個小的開源的現代C++影象處理庫。

當然,個人覺得它相比其他庫最重要的特點就是它只是一個.h檔案,只需把它下載下來後放到VS安裝目錄下的Include檔案下,編寫程式時像正常的標頭檔案一樣使用就可以了。

  • 它不需要對庫的提前編譯
  • 不用處理複雜的依賴關係
  • 編譯是按需完成的
  • 類成員和函式都是內聯的,在程式執行時有更好的表現

4.配置CImg

正如上面所說,CImg的配置過程相當簡單,找到自己的VS安裝目錄(我的是安裝在C盤C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include),將CImg.h放進該資料夾即可

這裡寫圖片描述
這裡提供一下(http://cimg.eu/download.shtml)官網的下載地址,其實直接百度谷歌很容易找到官網然後Download,而且官網也有很多第一手的資料可以提供我們學習使用。


5.第一個CImg影象處理程式

這次我們先寫出一個Hello CImg的程式,實現圖片的讀取顯示和儲存。
程式碼如下:

/*CImg demo for blog*/
#include<CImg.h>   // Include the library file
using namespace cimg_library;

int main() {
    CImg<unsigned char> image;
    image.load_bmp("demo.bmp");  // load the image
    image.display();   // display the image
    image.save("new.bmp"); // create a new name and save the image
    return 0;
}

執行結果如下:
這裡寫圖片描述

這裡寫圖片描述
一個只有十行左右的程式,便可以輕鬆完成對影象的簡單操作,我們下次見!