[171102] 圖像處理背景介紹
原創內容,禁止轉載!
導讀:本篇是 Python OpenCV 圖像處理 系列文章 正文第1篇,是主要是圖像處理背景知識。其實不重要,可以略過。我覺得更重要的是下篇文章 [171102] Python3 OpenCV3 圖像處理基礎(Python3 + Numpy + Matplotlib + OpenCV3 + ...)。額,更多內容,請查看 [171101] Python OpenCV 圖像處理專欄目錄。
圖像的分類
通常所說的圖像是二維數字圖像,像素以二維整數數組保存,然後以壓縮的方式進行傳輸和保存。自然圖像的生成需要經過「採樣-量化-編碼-處理」等流程。 根據量化級別和通道個數,可將圖像分為
(1) 0-1二值圖像(2) 灰度級為0-255的灰度圖像(3) 假彩色圖像(由灰度圖和顏色映射表構成)(4) 多通道彩色圖像(如RGB三波段)(5) 多光譜圖像(包含N個頻帶的響應圖)(6) 三維圖像(圖像棧,每個圖像代表物體的一個橫截面,空間採樣)(7) 視頻(圖像序列,每個圖像代表不同時刻的圖像,時間採樣)等等
圖像處理及典型問題
圖像處理,一般是數字圖像進行分析、加工,使其滿足視覺、心理或者其他要求的技術,可以看做是信號處理在二維圖像域的一類應用。常見的一維信號(如聲音)概念也可以拓展到圖像處理上,如解析度、動態範圍、帶寬、濾波器、微分運算元、卷積等,只不過更加複雜。同時二維或高維信號處理還包含一些更複雜的技術,如旋轉不變、區域分析等。
在進行圖像處理時,會遇到一些典型問題,如下。
(1) 顏色/亮度值處理:如進行色彩空間(color-space)轉換、顏色校正、對比度調整等。(2) 空域幾何變換:如圖像的縮放、旋轉、仿射變換、透視變換等。(3) 圖像濾波:使用濾波器和圖像卷積等技術,如高斯濾波、均值/中值/極值濾波、形態學濾波等,獲取降噪或增強的圖像。(4) 圖像配准和融合:多場景下同一目標的圖像按照對應關係匹配、幾何變換後,進行加權求和、組合、拼接等操作。(5) 圖像壓縮:主要用於圖像存儲和和傳輸,如PNG的LZ77和哈弗曼編碼壓縮、JPEG的DCT變換後壓縮等
圖像處理可以用在圖像/影像編輯、遙感圖像處理、人臉識別、光學字元識別、視頻監控處理、輔助駕駛、醫療圖像處理、工業視覺等領域。
神經網路中一些圖像處理相關的數據集及任務
而當前,機器學習、神經網路比較火熱,尤其是卷積神經網路常常用於圖像/視頻的處理(分類、分割、檢測、識別等)。常見的神經網路相關數據集及對應任務有:
1. [MNIST 手寫字元識別](http://yann.lecun.com/exdb/mnist/index.html)2. [ImageNet 圖像分類](http://www.image-net.org/about-stats)3. [CIFAR 圖像分類](http://www.cs.toronto.edu/~kriz/cifar.html) 4. [Visual Object Classes 圖像分類](http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html) [COCO(Common Objects in Context)圖像識別和語義分割](http://mscoco.org)5. [FDDB 人臉檢測](http://vis-www.cs.umass.edu/fddb/)6. [LFW 人臉識別](http://vis-www.cs.umass.edu/lfw/)
更多的網路學習相關數據集可以在下面兩個網站獲取,有興趣可以自己去查看。
1. [Datasets " Deep Learning](http://deeplearning.net/datasets )2. [Open Datasets for Deep Learning](https://deeplearning4j.org/opendata)
常用的圖像處理開發包/工具
這裡簡要介紹幾種圖像處理領域知名的開發工具。
- [Matlab Image Processing Toolbox](https://www.mathworks.com/products/image.html)
IPT 是商業軟體MATLAB的一個工具包, 提供了圖像處理中的一系列演算法和一些APP,用於圖像處理、分析、可視化、演算法開發等。可以實現圖像分割、增強、降噪、幾何變換、圖像配准、3D圖像處理等。配套的 APPs 可以按照通過用的圖像處理流程進行自動處理。如可以進行互動式圖像分割、配准,批處理大規模圖像數據集等。同時提供的可視化函數和APPs可以讓開發者便捷地查看2D圖像、3D圖像棧、視頻等,便捷地進行調整對比度、操作ROIs(regions of interest)等操作。
2. [OpenCV: Open Source Computer Vision](https://opencv.org/)
OpenCV 是在 BSD license 下發布開源計算機視覺庫,在學術和商業等均可以自由使用。最提供 C++、C、Python、Java介面,支持WinX、Linux、MAC、Android、iOS等系統。初版本是由C語言編寫,最新版本則主要由 Mordern C++ 開發,代碼經過優化,支持多核。如果啟用 OpenGL,還可以利用硬體加速來加快速度。截止2017.11.02,最正式版是 OpenCV 3.3。
3. [Sckiki-Image:Image processing in Python](http://scikit-image.org/)
Scikit-Image 是以Python實現的開源圖像處理演算法庫,使用時免費不受限。
由於 Matlab 是商業軟體,本專欄不做更詳細的探討。而主要集中在 使用 OpenCV 的 Python介面實現圖像處理,可能會用到 Scikit-Image。
下一篇再介紹環境搭建和基本操作,這篇就當做是背景吧。
推薦閱讀:
※利用條件GANs的pix2pix進化版:高解析度圖像合成和語義操作 | PaperDaily #23
※1.6【OpenCV圖像處理】圖像混合
※Matlab圖像處理中的傅里葉變換
※[171105] 基於 Python OpenCV 圖像處理的車道線檢測