特此聲明,鄙人收集資料大都來源於百度百科,但是提取其中關鍵部分,加上一些其他的網上資源來幫助一些概念的理解,希望和大家一起學習。如有解釋不到位的地方,還請多多理解。
先簡單介紹一下OpenCV,以後再進行深入學習:
OpenCV用C++語言編寫,它的主要接口也是C++語言,但是依然保留了大量的C語言接口。該庫也有大量的Python,
Java and MATLAB/OCTAVE (版本2.5)的接口。這些語言的API接口函數可以通過在線文檔獲得。如今也提供對於C#,Ch, Ruby的支持。
OpenCV功能
- 圖像數據操作(內存分配與釋放,圖像複製、設定和轉換)
- 圖像/視頻的輸入輸出(支持文件或攝像頭的輸入,圖像/視頻文件的輸出)
- 矩陣/向量數據操作及線性代數運算(矩陣乘積、矩陣方程求解、特徵值、奇異值分解)
- 支持多種動態數據結構(鏈表、隊列、數據集、樹、圖)
- 基本圖像處理(去噪、邊緣檢測、角點檢測、採樣與插值、色彩變換、形態學處理、直方圖、圖像金字塔結構)
- 結構分析(連通域/分支、輪廓處理、距離轉換、圖像矩、模板匹配、霍夫變換、多項式逼近、曲線擬合、橢圓擬合、狄勞尼三角化)
- 攝像頭定標(尋找和跟蹤定標模式、參數定標、基本矩陣估計、單應矩陣估計、立體視覺匹配)
- 運動分析(光流、動作分割、目標跟蹤)
- 目標識別(特徵方法、HMM模型)
- 基本的GUI(顯示圖像/視頻、鍵盤/鼠標操作、滑動條)
- 圖像標註(直線、曲線、多邊形、文本標註)
OpenCV模塊
- cv – 核心函數庫
- cvaux – 輔助函數庫
- cxcore – 數據結構與線性代數庫
- highgui – GUI函數庫
- ml – 機器學習函數庫
我們知道,在計算機中,按照顏色和灰度的多少可以將圖像分爲二值圖像、灰度圖像、索引圖像和真彩色RGB圖像四種基本類型。
接下來我們一一介紹
二值圖像
二值圖像中所有的像素只能從0和1這兩個值中取(像素點非黑即白:“0”代表黑色,“1”代白色),因此在MATLAB中,二值圖像用一個由0和1組成的二維矩陣表示。這兩個可取的值分別對應於關閉和打開,關閉表徵該像素處於背景,而打開表徵該像素處於前景。以這種方式來操作圖像可以更容易識別出圖像的結構特徵。
二值圖像一般用來描述文字或者圖形,其優點是佔用空間少,缺點是,當表示人物,風景的圖像時,二值圖像只能描述其輪廓,不能描述細節。這時候要用更高的灰度級。
灰度圖像
一幅完整的圖像,是由紅色、綠色、藍色三個通道組成的(RGB三原色)。紅色、綠色、藍色三個通道的縮覽圖都是以灰度顯示的。用不同的灰度色階來表示“
紅,綠,藍”在圖像中的比重。通道中的純白,代表了該色光在此處爲最高亮度,亮度級別是255。
灰度圖像矩陣元素的取值範圍通常爲[0,255]。因此其數據類型一般爲8位無符號整數的(int8),這就是人們經常提到的256灰度圖像。“0”表示純黑色,“255”表示純白色,中間的數字從小到大表示由黑到白的過渡色。在某些軟件中,灰度圖像也可以用雙精度數據類型(double)表示,像素的值域爲[0,1],0代表黑色,1代表白色,0到1之間的小數表示不同的灰度等級。二值圖像可以看成是灰度圖像的一個特例。
索引模式和灰度模式比較類似,它的每個象素點也可以有256種顏色容量,但它可以負載彩色。灰度模式的圖像最多只能有256種顏色。當圖像轉換成索引模式時,系統會自動根據圖像上的顏色歸納出能代表大多數的256種顏色,就象一張顏色表,然後用這256種來代替整個圖像上所有的顏色信息。
索引模式的圖像就像是一塊塊由彩色的小瓷磚所拼成的,由於它最多只能有256種彩色,所以它所形成的文件相對其它彩色要小得多。索引模式的另一個好處是它所形成的每一個顏色都有其獨立的索引標識。當這種圖像在網上發佈時,只要根據其索引標識將圖像重新識別,它的顏色就完全還原了。
索引模式主要用於網絡上的圖片傳輸和一些對圖像象素、大小等有嚴格要求的地方。
接下來引用百度知道里一位回答者的內容幫助大家理解:
圖中圓圈內的就是索引圖像的索引表,下面的就是其對應RGB顏色表。
圖中小圓圈處的索引號是5,對應RGB顏色的第5行,所以該處RGB顏色實際是0.2902 0.0627 0.0627
索引圖像的作用就是體積小,方便傳輸,只需要把索引表傳輸過去,接收方用對應的RGB顏色表還原就行。
RGB圖像與索引圖像一樣都可以用來表示彩色圖像。與索引圖像一樣,它分別用紅(R)、綠(G)、藍(B)三原色的組合來表示每個像素的顏色。但與索引圖像不同的是,RGB圖像每一個像素的顏色值(由RGB三原色表示)直接存放在圖像矩陣中,由於每一像素的顏色需由R、G、B三個分量來表示,M、N分別表示圖像的行列數,三個M x N的二維矩陣分別表示各個像素的R、G、B三個顏色分量。RGB圖像的數據類型一般爲8位無符號整形,通常用於表示和存放真彩色圖像,當然也可以存放灰度圖像。
位圖圖像
位圖圖像質量是由單位長度內像素的多少來決定的。單位長度內像素越多,分辨率越高,圖像的效果越好。
RGB
位圖顏色的一種編碼方法,用紅、綠、藍三原色的光學強度來表示一種顏色。這是最常見的位圖編碼方法,可以直接用於屏幕顯示。
CMYK
位圖顏色的一種編碼方法,用青、品紅、黃、黑四種顏料含量來表示一種顏色。常用的位圖編碼方法之一,可以直接用於彩色印刷。
Alpha通道
在原有的圖片編碼方法基礎上,增加像素的透明度信息。圖形處理中,通常把RGB三種顏色信息稱爲紅通道、綠通道和藍通道,相應的把透明度稱爲Alpha通道。多數使用顏色表的位圖格式都支持Alpha通道。
色彩深度
色彩深度又叫色彩位數,即位圖中要用多少個二進制位來表示每個點的顏色,是分辨率的一個重要指標。常用有1位(單色),2位(4色,CGA),4位(16色,VGA),8位(256色),16位(增強色),24位和32位(真彩色)等。色深16位以上的位圖還可以根據其中分別表示RGB三原色或CMYK四原色(有的還包括Alpha通道)的位數進一步分類,如16位位圖圖片還可分爲R5G6B5,R5G5B5X1(有1位不攜帶信息),R5G5B5A1,R4G4B4A4等等。
矢量圖
矢量圖使用直線和曲線來描述圖形,這些圖形的元素是一些點、線、矩形、多邊形、圓和弧線等等,它們都是通過數學公式計算獲得的。矢量可以是一個點或一條線,矢量圖只能靠軟件生成,文件佔用內在空間較小。
矢量圖最明顯的特徵:矢量圖的顏色邊緣和線條的邊緣是非常順滑的,比如一條弧度線,如果有凹凸不平的,那麼這種矢量圖是劣質的,一個色塊上面的顏色有很多小塊這種也是劣質,高品質矢量圖應該是,無論你是放大或者縮小,顏色的邊緣也是非常順滑,並且非常清楚的,線條之間是同比例的,並且是同樣粗細的,節點同樣是很少的,一般來講矢量圖都是由位圖仿圖繪製出來的,首先有一個圖,然後根據他仿圖繪製出來。
位圖與矢量圖的比較
|
位圖 | 矢量圖 |
表現內容 | 豐富 | 單一 |
儲存空間 | 大 | 小 |
放大縮小的效果 | 放大後模糊 | 可以無限放大 |
計算機顯示的時間 |
慢 |
快 |
我們一起來看看圖像處理中的噪聲是怎麼回事?
噪聲對人的影響噪聲可以理解爲“ 妨礙人們感覺器官對所接收的信源信息理解的因素”。而圖像中各種妨礙人們對其信息接受的因素即可稱爲圖像噪聲
。噪聲在理論上可以定義爲“不可預測,只能用概率統計方法來認識的隨機誤差”。因此將圖像噪聲看成是多維隨機過程是合適的,因而描述噪聲的方法完全可以借用隨機過程的描述,即用其概率分佈函數和概率密度分佈函數。(反正我是看不懂,我數學極差!!!)
圖像系統中的噪聲來自多方面 ,有電子元器件 ,如電阻引起的熱噪聲;真空器件引起的散粒噪聲和閃爍噪聲;面結型晶體管產生的顆粒噪聲和噪聲;場效應管的溝道熱噪聲 ;光電管的光量子噪聲和電子起伏噪聲;攝象管引起的各種噪聲等等。由這些元器件組成各種電子線路以及構成的設備又將使這些噪聲產生不同的變換而形成局部線路和設備的噪聲。另外還有就是光學現象所產生的圖像光學噪聲。
直方圖是一種點操作,它逐點改變圖像的灰度值,儘量使各個灰度級別都具有相同的數量的像素點,使直方圖趨於平衡。直方圖均衡可以使輸入圖像轉換爲在每一個灰度級上都有相同像素點數的輸出圖像(即輸出的直方圖是平的)。