图像滤波总结(面试经验总结)
目錄
圖像平滑處理,6種濾波總結(jié)的綜合示例
【盒式濾波、均值濾波、高斯濾波、中值濾波、雙邊濾波導(dǎo)向?yàn)V波】
1-圖像濾波
2-代碼演示
3-顯示結(jié)果
4-程序說(shuō)明
5 角點(diǎn)檢測(cè)(Harris,Fast,surf)
圖像平滑處理,6種濾波總結(jié)的綜合示例
【盒式濾波、均值濾波、高斯濾波、中值濾波、雙邊濾波導(dǎo)向?yàn)V波】
本文力求用最簡(jiǎn)潔的語(yǔ)言,詳細(xì)的代碼將此部分內(nèi)容講解清楚,但由于博主同樣是剛剛接觸OpenCV,或許表達(dá)上有些瑕疵,還望讀者能夠指教探討,大家共同進(jìn)步。
機(jī)器配置為:VS2017+opencv3.2.0+Win-64bit。
若本文能給讀者帶來(lái)一點(diǎn)點(diǎn)啟示與幫助,我就很開(kāi)心了。
====================分割線====================
1-圖像濾波
- 1.圖像濾波,即在盡量保留圖像細(xì)節(jié)特征的條件下對(duì)目標(biāo)圖像的噪聲進(jìn)行抑制,是圖像預(yù)處理中不可缺少的操作,其處理效果的好壞將直接影響到后續(xù)圖像處理和分析的有效性和可靠性。
- 2.消除圖像中的噪聲成分叫作圖像的平滑化或?yàn)V波操作。信號(hào)或圖像的能量大部分集中在幅度譜的低頻和中頻段是很常見(jiàn)的,而在較高頻段,感興趣的信息經(jīng)常被噪聲淹沒(méi)。因此一個(gè)能降低高頻成分幅度的濾波器就能夠減弱噪聲的影響。
- 3.平滑濾波是低頻增強(qiáng)的空間域?yàn)V波技術(shù)。它的目的有兩類:一類是模糊;另一類是消除噪音。空間域的平滑濾波一般采用簡(jiǎn)單平均法進(jìn)行,就是求鄰近像元點(diǎn)的平均亮度值。鄰域的大小與平滑的效果直接相關(guān),鄰域越大平滑的效果越好,但鄰域過(guò)大,平滑會(huì)使邊緣信息損失的越大,從而使輸出的圖像變得模糊,因此需合理選擇鄰域的大小。
- 4.關(guān)于濾波器,一種形象的比喻法是:我們可以把濾波器想象成一個(gè)包含加權(quán)系數(shù)的窗口,當(dāng)使用這個(gè)濾波器平滑處理圖像時(shí),就把這個(gè)窗口放到圖像之上,透過(guò)這個(gè)窗口來(lái)看我們得到的圖像。
- 濾波目的:
- 1、消除圖像中混入的噪聲。2、為圖像識(shí)別抽取出圖像特征。
濾波要求:
- 1、不能損壞圖像輪廓及邊緣 。2、圖像視覺(jué)效果應(yīng)當(dāng)更好。
濾波器的種類有很多, 本文結(jié)合前幾節(jié)的內(nèi)容,寫了個(gè)綜合示例,包含6種濾波方法:
盒式濾波、平滑處理1線性濾波之——盒式濾波(方框?yàn)V波)
均值濾波、平滑處理2線性濾波之——均值濾波
高斯濾波、平滑處理3線性濾波之——高斯濾波
中值濾波、平滑處理4非線性濾波之——中值濾波
雙邊濾波、平滑處理5非線性濾波之——雙邊濾波
導(dǎo)向?yàn)V波、平滑處理6——引導(dǎo)濾波/導(dǎo)向?yàn)V波(Guided Filter)
其中閾值量可通過(guò)滑動(dòng)條來(lái)調(diào)節(jié),下面來(lái)看看程序是如何實(shí)現(xiàn)的。
?
2-代碼演示
/*?功能:用滾動(dòng)條來(lái)控制6種濾波方式的參數(shù)值。?盒式濾波、均值濾波、高斯濾波、中值濾波、雙邊濾波、導(dǎo)向?yàn)V波。?
*/??
#include?<opencv2/core/core.hpp>??????????????????????
#include?<opencv2/highgui/highgui.hpp>??????????
#include?<opencv2/imgproc/imgproc.hpp>??????
#include?<iostream>?????????
using?namespace?std;??
using?namespace?cv;??#define?WINDOWNAME?"【濾波處理結(jié)果窗口】"??//---------------【全局變量聲明部分】-------------------------??
Mat?g_srcIamge,?g_dstImage1,?g_dstImage2,?g_dstImage3,?g_dstImage4,?g_dstImage5,?g_dstImage6;??
int?g_nBoxFilterValue?=?1;//盒式濾波內(nèi)核值??
int?g_nMeanBlurValue?=?1;//均值濾波內(nèi)核值??
int?g_nGaussianBlurValue?=?1;//高斯濾波內(nèi)核值??
int?g_nMedianBlurValue?=?1;//中值濾波內(nèi)核值??
int?g_nBilateralFilterValue?=?1;//雙邊濾波內(nèi)核值??
int?g_nGuidedFilterValue?=?1;//導(dǎo)向?yàn)V波內(nèi)核值??
const?int?g_nMaxVal?=?20;?//預(yù)設(shè)滑動(dòng)條最大值???
//--------------【全局函數(shù)聲明部分】-------------------------??
//軌跡條回調(diào)函數(shù)??
static?void?on_BoxFilter(int,?void*);//盒式濾波器??
static?void?on_MeanBlur(int,?void*);//均值濾波器??
static?void?on_GaussianBlur(int,?void*);//高斯濾波器??
static?void?on_MedianBlur(int,?void*);//中值濾波器??
static?void?on_BilateralFilter(int,?void*);//雙邊濾波器??
static?void?on_GuidedFilter(int,?void*);//導(dǎo)向?yàn)V波器??
void?guidedFilter(Mat?&srcMat,?Mat?&guidedMat,?Mat?&dstImage,?int?radius,?double?eps);//導(dǎo)向?yàn)V波器??//----------------------------【主函數(shù)】---------------------------??
int?main()??
{??//------------【1】讀取源圖像并檢查圖像是否讀取成功------------????g_srcIamge?=?imread("D:\\OutPutResult\\ImageTest\\boatLong.jpg");??if?(!g_srcIamge.data)??{??cout?<<?"讀取圖片錯(cuò)誤,請(qǐng)重新輸入正確路徑!\n";??system("pause");??return?-1;??}??namedWindow("【源圖像】",?1);//創(chuàng)建窗口??imshow("【源圖像】",?g_srcIamge);//顯示窗口??//------------【2】在WINDOWNAME窗口上分別創(chuàng)建濾波6個(gè)滑動(dòng)條------------?????????namedWindow(WINDOWNAME);//創(chuàng)建窗口????createTrackbar("方框?yàn)V波",?WINDOWNAME,?&g_nBoxFilterValue,?g_nMaxVal,?on_BoxFilter);//創(chuàng)建方框?yàn)V波軌跡條??on_BoxFilter(g_nBoxFilterValue,?0);?//軌跡條的回調(diào)函數(shù)??createTrackbar("均值濾波",?WINDOWNAME,?&g_nMeanBlurValue,?g_nMaxVal,?on_MeanBlur);//創(chuàng)建均值濾波軌跡條??on_MeanBlur(g_nMeanBlurValue,?0);??createTrackbar("高斯濾波",?WINDOWNAME,?&g_nGaussianBlurValue,?g_nMaxVal,?on_GaussianBlur);//創(chuàng)建高斯濾波軌跡條??on_GaussianBlur(g_nGaussianBlurValue,?0);??createTrackbar("中值濾波",?WINDOWNAME,?&g_nMedianBlurValue,?g_nMaxVal,?on_MedianBlur);//創(chuàng)建中值濾波軌跡條??on_MedianBlur(g_nMedianBlurValue,?0);??createTrackbar("雙邊濾波",?WINDOWNAME,?&g_nBilateralFilterValue,?g_nMaxVal,?on_BilateralFilter);//創(chuàng)建雙邊濾波軌跡條??on_BilateralFilter(g_nBilateralFilterValue,?0);??createTrackbar("導(dǎo)向?yàn)V波",?WINDOWNAME,?&g_nGuidedFilterValue,?g_nMaxVal,?on_GuidedFilter);//創(chuàng)建導(dǎo)向?yàn)V波軌跡條??on_GuidedFilter(g_nGuidedFilterValue,?0);??//------------【3】退出程序------------????cout?<<?"\t按下'q'鍵,退出程序~!\n"?<<?endl;??while?(char(waitKey(1))?!=?'q'){}??return?0;??
}??//----------------------【on_BoxFilter()函數(shù)】------------------------??
static?void?on_BoxFilter(int,?void*)??
{??boxFilter(g_srcIamge,?g_dstImage1,?-1,?Size(g_nBoxFilterValue?*?2?+?1,?g_nBoxFilterValue?*?2?+?1));??cout?<<?"\n當(dāng)前為【盒式濾波】處理效果,其內(nèi)核大小為:"?<<?g_nBoxFilterValue?*?2?+?1?<<?endl;??imshow(WINDOWNAME,?g_dstImage1);??
}??
//----------------------【on_MeanBlur()函數(shù)】------------------------??
static?void?on_MeanBlur(int,?void*)??
{??blur(g_srcIamge,?g_dstImage2,?Size(g_nMeanBlurValue?*?2?+?1,?g_nMeanBlurValue?*?2?+?1),?Point(-1,?-1));??cout?<<?"\n當(dāng)前為【均值濾波】處理效果,其內(nèi)核大小為:"?<<?g_nMeanBlurValue?*?2?+?1?<<?endl;??imshow(WINDOWNAME,?g_dstImage2);??
}??
//----------------------【on_GaussianBlur()函數(shù)】------------------------??
static?void?on_GaussianBlur(int,?void*)??
{??GaussianBlur(g_srcIamge,?g_dstImage3,?Size(g_nGaussianBlurValue?*?2?+?1,?g_nGaussianBlurValue?*?2?+?1),?0,?0);??cout?<<?"\n當(dāng)前為【高斯濾波】處理效果,其內(nèi)核大小為:"?<<?g_nGaussianBlurValue?*?2?+?1?<<?endl;??imshow(WINDOWNAME,?g_dstImage3);??
}??
//----------------------【on_MedianBlur()函數(shù)】------------------------??
static?void?on_MedianBlur(int,?void*)??
{??medianBlur(g_srcIamge,?g_dstImage4,?g_nMedianBlurValue?*?2?+?1);??cout?<<?"\n當(dāng)前為【中值濾波】處理效果,其內(nèi)核大小為:"?<<?g_nMedianBlurValue?*?2?+?1?<<?endl;??imshow(WINDOWNAME,?g_dstImage4);??
}??
//----------------------【on_BilateralFilter()函數(shù)】------------------------??
static?void?on_BilateralFilter(int,?void*)??
{??bilateralFilter(g_srcIamge,?g_dstImage5,?g_nBilateralFilterValue,?g_nBilateralFilterValue?*?2,?g_nBilateralFilterValue?/?2);??cout?<<?"\n當(dāng)前為【雙邊濾波】處理效果,其內(nèi)核大小為:"?<<?g_nBilateralFilterValue?<<?endl;??imshow(WINDOWNAME,?g_dstImage5);??
}??
//----------------------【on_GuidedFilter()函數(shù)】------------------------??
static?void?on_GuidedFilter(int,?void*)??
{??vector<Mat>?vSrcImage,?vResultImage;??//【1】對(duì)源圖像進(jìn)行通道分離,并對(duì)每個(gè)分通道進(jìn)行導(dǎo)向?yàn)V波操作??split(g_srcIamge,?vSrcImage);??for?(int?i?=?0;?i?<?3;?i++)??{??Mat?tempImage;??vSrcImage[i].convertTo(tempImage,?CV_64FC1,?1.0?/?255.0);//將分通道轉(zhuǎn)換成浮點(diǎn)型數(shù)據(jù)??Mat?cloneImage?=?tempImage.clone();?//將tempImage復(fù)制一份到cloneImage??Mat?resultImage;??guidedFilter(tempImage,?cloneImage,?resultImage,?g_nGuidedFilterValue?*?2?+?1,?0.01);//對(duì)分通道分別進(jìn)行導(dǎo)向?yàn)V波??vResultImage.push_back(resultImage);//將分通道導(dǎo)向?yàn)V波后的結(jié)果存放到vResultImage中??}??//【2】將分通道導(dǎo)向?yàn)V波后結(jié)果合并??merge(vResultImage,?g_dstImage6);??cout?<<?"\n當(dāng)前處理為【導(dǎo)向?yàn)V波】,其內(nèi)核大小為:"?<<?g_nGuidedFilterValue?*?2?+?1?<<?endl;??imshow(WINDOWNAME,?g_dstImage6);??
}??//-------------------【實(shí)現(xiàn)導(dǎo)向?yàn)V波器函數(shù)部分】-------------------------??
void?guidedFilter(Mat?&srcMat,?Mat?&guidedMat,?Mat?&dstImage,?int?radius,?double?eps)??
{??//------------【0】轉(zhuǎn)換源圖像信息,將輸入擴(kuò)展為64位浮點(diǎn)型,以便以后做乘法------------??srcMat.convertTo(srcMat,?CV_64FC1);??guidedMat.convertTo(guidedMat,?CV_64FC1);??//--------------【1】各種均值計(jì)算----------------------------------??Mat?mean_p,?mean_I,?mean_Ip,?mean_II;??boxFilter(srcMat,?mean_p,?CV_64FC1,?Size(radius,?radius));//生成待濾波圖像均值mean_p???boxFilter(guidedMat,?mean_I,?CV_64FC1,?Size(radius,?radius));//生成導(dǎo)向圖像均值mean_I?????boxFilter(srcMat.mul(guidedMat),?mean_Ip,?CV_64FC1,?Size(radius,?radius));//生成互相關(guān)均值mean_Ip??boxFilter(guidedMat.mul(guidedMat),?mean_II,?CV_64FC1,?Size(radius,?radius));//生成導(dǎo)向圖像自相關(guān)均值mean_II??//--------------【2】計(jì)算相關(guān)系數(shù),計(jì)算Ip的協(xié)方差cov和I的方差var------------------??Mat?cov_Ip?=?mean_Ip?-?mean_I.mul(mean_p);??Mat?var_I?=?mean_II?-?mean_I.mul(mean_I);??//---------------【3】計(jì)算參數(shù)系數(shù)a、b-------------------??Mat?a?=?cov_Ip?/?(var_I?+?eps);??Mat?b?=?mean_p?-?a.mul(mean_I);??//--------------【4】計(jì)算系數(shù)a、b的均值-----------------??Mat?mean_a,?mean_b;??boxFilter(a,?mean_a,?CV_64FC1,?Size(radius,?radius));??boxFilter(b,?mean_b,?CV_64FC1,?Size(radius,?radius));??//---------------【5】生成輸出矩陣------------------??dstImage?=?mean_a.mul(srcMat)?+?mean_b;??
}??
?
3-顯示結(jié)果
原始圖像窗口,如下圖:
?
盒式濾波/方框?yàn)V波操作,如下圖:
?
均值濾波操作,如下圖:
?
高斯濾波操作,如下圖:
?
中值濾波操作,如下圖:
?
雙邊濾波操作,如下圖:
導(dǎo)向?yàn)V波操作,如下圖:
?
=====================分割線==================
4-程序說(shuō)明
【濾波處理結(jié)果窗口】中顯示的數(shù)值并非實(shí)際內(nèi)核大小,真正內(nèi)核大小還請(qǐng)看黑窗口的提示信息。
其中前五種濾波方式:盒式濾波、均值濾波、高斯濾波、中值濾波、雙邊濾波,OpenCV都已封裝在函數(shù)里了,我們直接調(diào)用即可,而導(dǎo)向?yàn)V波,是需要自己編寫,然后調(diào)用即可。
?
為了便于觀察各種濾波方式的效果優(yōu)缺點(diǎn),我對(duì)原圖進(jìn)行了處理,左邊的圖像是添加了椒鹽噪聲,而右邊的圖像是添加了高斯噪聲,同學(xué)們可以通過(guò)滑動(dòng)條調(diào)節(jié),試試看每種濾波方式對(duì)噪聲的處理結(jié)果是如何情況。
====END===================
5 角點(diǎn)檢測(cè)(Harris,Fast,surf)
前面分析了Sift算法的具體原理,就順便想看看其他的角點(diǎn)檢測(cè)算法,和對(duì)比。這些看完之后,相比sift的原理比較簡(jiǎn)單.
Harris:
這個(gè)算法通過(guò)兩張圖就看得很清楚了。將被檢測(cè)點(diǎn)上的window移動(dòng)一下,然后計(jì)算原來(lái)的window和移動(dòng)之后的window對(duì)應(yīng)位置像素差的平方和,如果變化不大說(shuō)明這個(gè)點(diǎn)在物體內(nèi)部,如果一個(gè)方向上變化大,另外一個(gè)方向上變化不大說(shuō)明在邊界上。如果任何方向上變化都很大說(shuō)明這個(gè)點(diǎn)就是corner point。
但是這個(gè)方法效果不是很好,主要存在兩方面的問(wèn)題:
- .0-1window對(duì)噪聲比較敏感
- window移動(dòng)的方向太少,導(dǎo)致該算法對(duì)邊緣敏感(準(zhǔn)確的說(shuō)是和window移動(dòng)方向不一致的邊緣)
harris(1988)harris(1988)年提出了改進(jìn)方案。
- 將01window改成了Gaussian window,中心權(quán)重比較高,離中心越遠(yuǎn)權(quán)重越低。
- 使用泰勒展開(kāi)考慮所有方向
通過(guò)泰勒展開(kāi)可以將原window和shift之后的window對(duì)應(yīng)位置像素差的平方和表示為移動(dòng)方向*該點(diǎn)Hessian矩陣*移動(dòng)方向。Hessian矩陣的較大特征值和對(duì)應(yīng)特征向量分別表示變化最大方向和對(duì)應(yīng)變化幅度。第二特征值和對(duì)應(yīng)特征向量,表示和變化最大方向相垂直的方向以及該方向變化的幅度。如果最大特征值很小那么說(shuō)明該點(diǎn)在物體內(nèi)部;如果第一特征值很大,另外一個(gè)特征值接近零說(shuō)明該點(diǎn)是一個(gè)edge point;如果兩個(gè)特征值都遠(yuǎn)大于零說(shuō)明該點(diǎn)是一個(gè)corner point。
Harris 為了簡(jiǎn)化計(jì)算提出了一個(gè)cornerness的量,越大越說(shuō)明這個(gè)點(diǎn)越corner
角點(diǎn)計(jì)算數(shù)學(xué)原理:
基本數(shù)學(xué)公式如下:
其中W(x, y)表示移動(dòng)窗口,I(x, y)表示像素灰度值強(qiáng)度,范圍為0~255。根據(jù)泰勒級(jí)數(shù),計(jì)算一階到N階的偏導(dǎo)數(shù),最終得到一個(gè)Harris矩陣公式:
根據(jù)Harris的矩陣計(jì)算矩陣特征值,然后計(jì)算Harris角度響應(yīng)值:
其中K為系數(shù)值,通常取值范圍為0.04 ~ 0.06之間。
算法詳細(xì)步驟
- 計(jì)算圖像X方向與Y方向的一階高斯偏導(dǎo)數(shù)Ix與Iy
- 根據(jù)第一步結(jié)果得到Ix^2 , Iy^2與Ix*Iy值
- 高斯模糊第二步三個(gè)值得到Sxx, Syy, Sxy
- 定義每個(gè)像素的Harris矩陣,計(jì)算出矩陣的兩個(gè)特質(zhì)值
- 計(jì)算出每個(gè)像素的R值
- 使用3X3或者5X5的窗口,實(shí)現(xiàn)非最大值壓制
- 根據(jù)角度檢測(cè)結(jié)果計(jì)算,最提取到的關(guān)鍵點(diǎn)以綠色標(biāo)記,顯示在原圖上。
Fast角點(diǎn)檢測(cè):
Edward Rosten and TomDrummond 在2006年提出了一種簡(jiǎn)單快速的角點(diǎn)探測(cè)算法,該算法檢測(cè)的角點(diǎn)定義為在像素點(diǎn)的周圍鄰域內(nèi)有足夠多的像素點(diǎn)與該點(diǎn)處于不同的區(qū)域。應(yīng)用到灰度圖像中,即有足夠多的像素點(diǎn)的灰度值大于該點(diǎn)的灰度值或者小于該點(diǎn)的灰度值。
考慮下圖中p點(diǎn)附近半徑為3的圓環(huán)上的16個(gè)點(diǎn),一個(gè)思路是若其中有連續(xù)的12個(gè)點(diǎn)的灰度值與p點(diǎn)的灰度值差別超過(guò)某一閾值,則可以認(rèn)為p點(diǎn)為角點(diǎn)。
這一思路可以使用機(jī)器學(xué)習(xí)的方法進(jìn)行加速。對(duì)同一類圖像,例如同一場(chǎng)景的圖像,可以在16個(gè)方向上進(jìn)行訓(xùn)練,得到一棵決策樹(shù),從而在判定某一像素點(diǎn)是否為角點(diǎn)時(shí),不再需要對(duì)所有方向進(jìn)行檢測(cè),而只需要按照決策樹(shù)指定的方向進(jìn)行2-3次判定即可確定該點(diǎn)是否為角點(diǎn)。
常見(jiàn)的角點(diǎn)檢測(cè)算法比較:
圖像匹配能夠應(yīng)用的場(chǎng)合非常多,如目標(biāo)跟蹤,檢測(cè),識(shí)別,圖像拼接等,而圖像匹配最核心的技術(shù)就要屬角點(diǎn)匹配了,所謂角點(diǎn)匹配是指尋找兩幅圖像之間的特征像素點(diǎn)的對(duì)應(yīng)關(guān)系,從而確定兩幅圖像的位置關(guān)系。
角點(diǎn)匹配可以分為以下四個(gè)步驟:
- 提取檢測(cè)子:在兩張待匹配的圖像中尋找那些最容易識(shí)別的像素點(diǎn)(角點(diǎn)),比如紋理豐富的物體邊緣點(diǎn)等。
- 提取描述子:對(duì)于檢測(cè)出的角點(diǎn),用一些數(shù)學(xué)上的特征對(duì)其進(jìn)行描述,如梯度直方圖,局部隨機(jī)二值特征等。
- 檢測(cè)子和描述子的常用提取方法有:sift, harris, surf, fast, agast, brisk, freak, brisk,orb等。
- .匹配:通過(guò)各個(gè)角點(diǎn)的描述子來(lái)判斷它們?cè)趦蓮垐D像中的對(duì)應(yīng)關(guān)系。常用方法如 flann
- 去外點(diǎn):去除錯(cuò)誤匹配的外點(diǎn),保留正確的內(nèi)點(diǎn)。常用方法有Ransac, GTM。
我對(duì)上述這些常用的檢測(cè)子和描述子的性能和速度做了一個(gè)測(cè)試,以找出其中性價(jià)比最好的組合(不考慮后兩步)
圖一
?
圖二
上面兩幅圖是對(duì)上述部分檢測(cè)子與描述子進(jìn)行測(cè)試的結(jié)果。
其中圖一和圖二的x坐標(biāo)表示不同的檢測(cè)子與描述子的組合,從1到30分別對(duì)應(yīng)
(surf、agast、brisk、fast、sift、orb)檢測(cè)子與 (brisk、agast、surf、sift、orb)描述子的線性組合,如第四組表示surf檢測(cè)子+sift描述子的組合。
圖一和圖二的y坐標(biāo)表示一系列測(cè)試圖片組,每組由兩張圖組成,這些圖片都是質(zhì)量較低的衛(wèi)星地圖,約2000*2000像素,每組的兩張圖片是由不同衛(wèi)星對(duì)地面上同一地區(qū)進(jìn)行拍攝的。它們之間的關(guān)系可能包含旋轉(zhuǎn),縮放,仿射變換,亮度變化,模糊,噪音等。從1到11的測(cè)試圖片組大概對(duì)應(yīng)著以下變換關(guān)系:
- 強(qiáng)烈亮度變化
- 旋轉(zhuǎn)
- 仿射變換+尺度變化+旋轉(zhuǎn)
- 仿射變換+亮度變化+旋轉(zhuǎn)
- 仿射變換+噪音
- 模糊+亮度變化
- 旋轉(zhuǎn)+噪音
- 旋轉(zhuǎn)+尺度變化
- 亮度變化+旋轉(zhuǎn)+模糊+噪音
- ?亮度變化+旋轉(zhuǎn)+尺度變化
- ?亮度變化+旋轉(zhuǎn)+尺度變化+強(qiáng)烈噪音。
圖一的z坐標(biāo)表示成功匹配的像素對(duì)的個(gè)數(shù)。圖二的z坐標(biāo)表示所需計(jì)算時(shí)間。
從測(cè)試結(jié)果來(lái)看,orb檢測(cè)子與surf描述子配合的效果是最好的,不過(guò)速度也是最慢的。古老的sift和surf依然好用,速度也還是那么不給力。在不考慮旋轉(zhuǎn)和仿射變換的情況下,fast是很不錯(cuò)的選擇,在小幅旋轉(zhuǎn)(20度內(nèi))的情況下,fast也還是有一定的容錯(cuò)能力的。在旋轉(zhuǎn)變化和尺度變化方面,各家武功相差不多,雖然在理論上sift支持旋轉(zhuǎn)變化,不過(guò)測(cè)試中它并沒(méi)有表現(xiàn)出明顯的優(yōu)勢(shì)。在噪音方面,sift和orb明顯強(qiáng)于其它算法;在亮度變化和仿射變換上,orb的魯棒性是最好的;綜合比較,orb的性價(jià)比在此次華山論劍中略勝一籌。
下面兩張圖是上面11組圖片的均值,從平均值來(lái)看,orb也是最好的
?
?
- :http://blog.csdn.net/ben_ben_niao/article/details/47446627
- :http://blog.csdn.net/sinat_36264666/article/details/77823400
- :https://blog.csdn.net/xw20084898/article/details/21822565
?
總結(jié)
以上是生活随笔為你收集整理的图像滤波总结(面试经验总结)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 防晒霜多少钱啊?
- 下一篇: 尺度空间理论与图像金字塔(二)