opencv入門六,霍夫圓檢測、像素重映射、直方圖均衡、直方圖計算

霍夫圓檢測

因爲霍夫圓檢測對噪聲比較敏感,所以首先要對圖像做中值濾波。
基於效率考慮,Opencv中實現的霍夫變換圓檢測是基於圖像梯度的實現,分爲兩步:
1. 檢測邊緣,發現可能的圓心
2. 基於第一步的基礎上從候選圓心開始計算最佳半徑大小

HoughCircles(
InputArray image, // 輸入圖像 ,必須是8位的單通道灰度圖像
OutputArray circles, // 輸出結果,發現的圓信息
Int method, // 方法 - HOUGH_GRADIENT
Double dp, // dp = 1; 
Double mindist, // 10 最短距離-可以分辨是兩個圓的,否則認爲是同心圓- src_gray.rows/8
Double param1, // canny edge detection high threshold
Double param2, // 中心點累加器閾值 – 候選圓心
Int minradius, // 最小半徑
Int maxradius//最大半徑 
)

像素重映射

Remap(
InputArray src,// 輸入圖像
OutputArray dst,// 輸出圖像
InputArray  map1,// x 映射表 CV_32FC1/CV_32FC2
InputArray map2,// y 映射表
int interpolation,// 選擇的插值方法,常見線性插值,可選擇立方等
int borderMode,// BORDER_CONSTANT
const Scalar borderValue// color 
)

直方圖(Histogram)均衡

equalizeHist(
InputArray src,//輸入圖像,必須是8-bit的單通道圖像
OutputArray dst// 輸出結果
)

上述直方圖概念是基於圖像像素值,其實對圖像梯度、每個像素的角度、等一切圖像的屬性值,我們都可以建立直方圖。這個纔是直方圖的概念真正意義,不過是基於圖像像素灰度直方圖是最常見的。
直方圖最常見的幾個屬性:

  • dims 表示維度,對灰度圖像來說只有一個通道值dims=1
  • bins 表示在維度中子區域大小劃分,bins=256,劃分爲256個級別
  • range 表示值得範圍,灰度值範圍爲[0~255]之間

直方圖計算

split(// 把多通道圖像分爲多個單通道圖像
const Mat &src, //輸入圖像
Mat* mvbegin)// 輸出的通道圖像數組
calcHist(
 const Mat* images,//輸入圖像指針
int images,// 圖像數目
const int* channels,// 通道數
InputArray mask,// 輸入mask,可選,不用
OutputArray hist,//輸出的直方圖數據
int dims,// 維數
const int* histsize,// 直方圖級數
const float* ranges,// 值域範圍
bool uniform,// true by default
bool accumulate// false by defaut
)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章