1. 程式人生 > >OpenCV3程式設計入門筆記-線性濾波、非線性濾波、影象深度、通道

OpenCV3程式設計入門筆記-線性濾波、非線性濾波、影象深度、通道

15     遍歷影象中的畫素,是先for行數後for列數的,也就是一列一列的遍歷,matlab中是從1開始計數,opnecv中採用c語言的從0開始計數。

         矩陣歸一化:normalize()函式,引數挺多,不過大多都有預設值,不用都寫出來,一般要求的影象歸一化精簡寫法為 normalize(InputArray secImage , outputArray dstImage);一個輸入,一個輸出即可。

16     消除影象中的噪聲成分叫做影象的平滑化或濾波操作,訊號或影象的能量大部分集中在幅度譜的低頻和中頻段,而在較高頻段,有用的資訊經常被噪聲淹沒,因此一個能降低高頻成分幅度的濾波器就能夠減弱噪聲的影響。Ps:濾波其實就是一個卷積的操作。

         三種線性濾波:方框濾波 boxblur函式 boxFilter(src,dst,-1,Size(3,3)); 其中-1表示輸出圖形採用原影象深度,即src.depth,影象深度表示儲存每個畫素所用的位數,也用於量度影象的色彩解析度。Size(3,3)表示3*3的核心大小。boxFilter最少需要這四個引數,少其一都不行。其餘引數有預設值一般不與考慮。

         均值濾波 blur函式,輸出影象的每一個畫素是核視窗內輸入影象對應畫素的平均值,其實就是歸一化的方框濾波。 blur(src,dst,Size(3,3)); 主要是領域平均法,即某一點的畫素是由除去該點的模板的其他點的平均值代替,故不能很好的保護影象細節,會造成影象變得模糊,不能很好的去除噪聲點。

         和均值濾波相似的是高斯濾波,只不過高斯濾波不是簡單的求其平均值,二是加權平均值。高斯濾波 是用一個模板掃描影象中的每一個畫素,用模板確定的領域內的畫素的加權平均灰度值去替代模板中心畫素點的值,效果明顯比均值濾波好了很多。Ps:理解高斯濾波概念,從數學的角度來看,影象的高斯濾波過程就是影象與正態分佈做卷積,由於正態分佈又叫做高斯分佈,所以這項操作才叫做高斯濾波。

GussianBlur(src,dst,Size(5,7),sigmaX,sigmaY); 和前兩種濾波不同的是,第三個表示核心大小的引數必須是正數和奇數,或者為0,還需設定高斯核函式在X和Y方向的標準偏差sigmaX、sigmaY。

17     兩種非線性濾波器:中值濾波median filter 雙邊濾波 bilateral filter

影象處理的很多情況下,使用線性濾波更不到更好的效果,例如:噪聲是散粒噪聲而不是高斯噪聲,即影象偶爾會出現很大的值的時候,用高斯濾波器進行模糊的話,噪聲畫素是不會被去除的,只是轉換為更為柔和但仍然可見的顆粒。

中值濾波:基本思想是用畫素點鄰域灰度值的中值(中位數)來代替該畫素點的灰度值,在去除脈衝噪聲、椒鹽噪聲的同時能保留影象的邊緣細節。中值濾波在一定條件下,能克服線性濾波器所帶來的影象細節模糊。medianBlur(src,dst,ksize);其中ksize是孔徑的線性尺寸,必須是大於1的奇數。

例如:medianBlur(image,out,7);

雙邊濾波是結合影象的空間鄰近度和畫素值相似度的一種折中處理,好處是可以做邊緣儲存。

bilateralFilter(src,dst,d,sigmaColor,sigmaSpace);d表示過濾過程中每個畫素鄰域的直徑,sigmaColor顏色空間濾波器的sigma值,引數值越大,就表明該畫素鄰域內有越寬廣的顏色會被混合在一起,產生較大的半相等顏色區域,sigmaSpace表示座標空間中濾波器的sigma值,座標空間的標註方差,數值越大,意味著越遠的畫素會相互影響,從而使更大的區域中足夠相似的顏色獲取相同的顏色。

例如:bilateralFilter(image,out,25,25*2,25/2);

18     影象的深度:

圖片是由一個個畫素點構成的,所有不同顏色的畫素點構成了一副完整的影象,計算機儲存圖片是以二進位制來進行的。1bit:用一位來儲存,那麼這個畫素點的取值範圍就是0或者1,那麼我們看來這幅圖片要麼是黑色要麼是白色。4 bit : 取值範圍為 0 到 2 的4次方8 bit : 來儲存畫素點的取值範圍為 0 到 2 的8次方,以此類推,我們把計算機儲存單個畫素點所用到的bit為稱之為影象的深度。bit表示位。

影象的通道:

我們都知道顏色的三元素 Red, Green, Blue. 如果是深度為24=3*8,我們剛好就可以用第一個8位儲存Red值,第二個儲存Green值,第三個儲存Blue值, 2的8次方剛好是255,所以我們一般看到的RGB值都是(0-255,0-255,0-255)這樣的值。如果用rgb來表示圖片的顏色值,我們稱這樣的圖片通道為三。

相關推薦

OpenCV3程式設計入門筆記-線性濾波非線性濾波影象深度通道

15     遍歷影象中的畫素,是先for行數後for列數的,也就是一列一列的遍歷,matlab中是從1開始計數,opnecv中採用c語言的從0開始計數。          矩陣歸一化:normalize()函式,引數挺多,不過大多都有預設值,不用都寫出來,一般要求的影象

OpenCV3程式設計入門》第6章-學習筆記1-線性濾波:方框濾波+均值濾波+高斯濾波【理論知識基礎】

目錄 影象濾波的目的: 濾波處理的要求  平滑濾波目的有兩類 OpenCV常用線性濾波器: OpenCV常用非線性濾波器: 線性濾波器定義及常用的線性濾波器: 濾波和模糊 鄰域運算元與線性濾波器  OpenCV常用線性濾波器: 【方框濾波(

OpenCV3程式設計入門》第6章-學習筆記1-boxFilter函式——方框濾波--(程式碼例項)

目錄 回顧基本操作和引數選項: 具體程式碼操作:  回顧基本操作和引數選項: C++: void boxFilter(InputArray src,OutputArray dst, int ddepth, Size ksize, Point anchor=Point(-

OpenCV3.4.3最新版本安裝詳解!VS2013平臺下,解決X86沒有問題。《OpenCV3程式設計入門》第1章基本知識--學習筆記2

第一步開啟opencv官方網站,下載opencv最新穩定版本: https://opencv.org/releases.html 點選以後,會跳轉網頁,進入網頁後,會等待下載,大概5秒鐘就會提示你下載。    (我的網頁下載比較慢,所以複製了下載連結,在迅雷

線性濾波非線性濾波區別

數字影象處理線性濾波: 輸出影象fo(x,y)= T[ fi(x,y) ],T是線性運算元,即:輸出影象上每個畫素點的值都是由輸入影象各畫素點值加權求和的結果。 非線性濾波的運算元中包含了取絕對值、置零等非線性運算。 線性濾波器的原始資料與濾波結果是一種算術運算,即用加減乘除等運算實現,

OpenCV3程式設計入門》——3.1.9 綜合示例程式:影象的載入顯示與輸出

書中關於影象的載入、顯示與輸出的綜合應用。有些細節知識將在本部落格後續更新。 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; int

OpenCV3程式設計入門》——4.2 OpenCV中常用資料結構和函式(PointScalarSizeRectcvtColor)

目錄 1、點的表示:Point類 2、顏色的表示:Scalar類 3、尺寸的表示:Size類 4、矩形的表示:Rect類 5、顏色空間轉換:cvtColor()函式 1、點的表示:Point類 Point類資料結構表示了二維座標系下的點,即由影象座標x和y指定的2D點

OpenCV3程式設計入門》——5.1.5 訪問影象中畫素的三類方法(指標訪問迭代器iterator動態地址計算配合at元素)

目錄 1、指標訪問畫素 2、迭代器操作畫素 3、動態地址計算 OpenCV中,有三種方式訪問影象畫素:  指標訪問:C操作符[]; 迭代器iterator 動態地址計算 上述方法在訪問速度上略有差異。debug模式下,

OpenCV3程式設計入門》——5.2.3 addWeighted()函式(線性混合)(附程式碼詳解)

addWeighted()函式用來計算兩個陣列(影象陣列)的加權和。 格式如下: void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray

[OpenCV3程式設計入門讀書筆記]LUT函式(5)

LUT函式可以用於影象元素的查詢、掃描和其他操作。 LUT函式定義 /** @brief Performs a look-up table transform of an array. The function LUT fills the output array with values

[OpenCV3程式設計入門讀書筆記]基本影象繪製(4)

目錄   用於繪製直線的line函式; 用於繪製橢圓的ellipse函式; 用於繪製矩形的rectangle函式; 用於繪製圓形的circle函式; 用於繪製填充多邊形的fillPoly函式和不填充多邊形polylines函式;   每個函式第

[OpenCV3程式設計入門讀書筆記]常用資料結構和函式(3)

點的表示:Point類 //第一種表示方式 Point point; point.x = 10; point.y = 8; //第二種表示方式 Point point = Point(10,8); 顏色的表示:Scalar類 特別注意OopenCV裡面不是RGB,是BGR,所以下面的a

[OpenCV3程式設計入門讀書筆記]基礎影象容器Mat(2)

Mat是一個類,由兩個資料部分組成,分別是矩陣頭和一個指向儲存矩陣所有畫素值的矩陣,其中矩陣頭包含了矩陣尺寸,儲存方法,儲存地址等資訊。   對於OpenCV1.X時代基於C語言構建的影象儲存格式IplImage*,如果在退出之前忘記release就會造成記憶體洩漏。而在OpenC

[OpenCV3程式設計入門讀書筆記]影象的載入,顯示和輸出(1)

#include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> using namespace cv; int main(){ Mat image = imread("C:\\Users\\tho

“毛星雲OpenCV3程式設計入門之python實現”第七篇影象拆分合併

5.3影象拆分、合併 python程式碼: # -*- coding: utf-8 -*- import cv2 import numpy as np srcImage = cv2.imread("E:/Study/python/OpenCV_study/i

“毛星雲OpenCV3程式設計入門之python實現”第八篇亮度對比度

5.4亮度、對比度 python程式碼: # -*- coding: utf-8 -*- import cv2 import numpy as np gcontrastvalue = 80 # 對比度 gbrightvalue = 80

OpenCV3程式設計入門》——5.4 影象對比度亮度值調整

理論依據 首先了解一下運算元的概念。一般的影象處理運算元都是一個函式,它接受一個或多個輸入影象,併產生輸出影象。下面是運算元的一般形式:                      

什麼是線性濾波非線性濾波

數字影象處理線性濾波: 輸出影象fo(x,y)= T[ fi(x,y) ],T是線性運算元,即:輸出影象上每個畫素點的值都是由輸入影象各畫素點值加權求和的結果。 非線性濾波的運算元中包含了取絕對值、置零等非線性運算。 線性濾波器的原始資料與濾波結果是一種算

opencv3程式設計入門》之一:影象處理計算機視覺與opencv

本文是我學習  毛星雲  的《opencv3程式設計入門》一書的學習筆記。 1 影象處理          影象處理是用計算機對影象進行分析,以達到所需結果的技術,又稱影像處理。它包括影象壓縮,增強和復原,匹配、描述和識別三個部分。 2 計算機視覺          計算機

opencv3程式設計入門學習筆記1-----基本影象容器Mat

1、Mat的結構 Mat本質上是由兩個資料部分組成的類: (包含資訊有矩陣的大小,用於儲存的方法,矩陣儲存的地址等)的矩陣頭和一個指標,指向包含了畫素值的矩陣(可根據選擇用於儲存的方法採用任何維度儲存資料)。矩陣頭部的大小是恆定的。然而,矩陣本身的大小因影象的不同而不同,通