您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“opencv FT顯著性檢測(cè)算法怎么使用”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“opencv FT顯著性檢測(cè)算法怎么使用”吧!
FT算法出自論文:
Frequency-tuned salient region detection
FT算法實(shí)現(xiàn)也非常簡(jiǎn)單,該方法從頻率角度分析圖像。
圖像在頻率域可以分成低頻部分和高頻部分。低頻部分反映了圖像的整體信息,如物體的輪廓,基本的組成區(qū)域。高頻部分反映了圖像的細(xì)節(jié)信息,如物體的紋理。顯著性區(qū)域檢測(cè)用到的更多的是低頻部分的信息。
在實(shí)際進(jìn)行計(jì)算時(shí),F(xiàn)T方法使用窗口5*5的高斯平滑來(lái)實(shí)現(xiàn)對(duì)最高頻的舍去。像素的顯著性可以用下面公式計(jì)算:
其中,Iu為圖像的平均特征,使用Lab顏色特征,后一項(xiàng)為像素p在高斯平滑后的Lab顏色特征,||.||為L(zhǎng)2范式,即計(jì)算前一項(xiàng)和后一項(xiàng)在了Lab顏色空間的歐氏距離。
FT方法實(shí)現(xiàn)簡(jiǎn)單,只需要高斯平滑和平均值計(jì)算。
對(duì)圖像進(jìn)行5*5的高斯平滑
轉(zhuǎn)換顏色空間。RGB顏色空間轉(zhuǎn)換為CIELAB顏色空間
計(jì)算整幅圖片的l、a、b的平均值
按照算法中的公式,計(jì)算每個(gè)像素l、a、b值同圖像三個(gè)l、a、b均值的歐氏距離,得到顯著圖
歸一化。圖像中每個(gè)像素的顯著值除以最大的那個(gè)顯著值。得到最終的顯著圖
程序編寫(xiě):
void FT::calculateSaliencyMap(Mat *src, Mat * dst, bool corlor,int ksize)
{
if (corlor && (*src).channels() == 3) //處理彩色域
{
Mat img3f = (*src);
img3f.convertTo(img3f, CV_32FC3, 1.0 / 255);
Mat sal(img3f.size(), CV_32F), tImg;
GaussianBlur(img3f, tImg, Size(ksize, ksize), 0);//高斯平滑去除高頻信息
cvtColor(tImg, tImg, COLOR_BGR2Lab);//轉(zhuǎn)換為L(zhǎng)AB顏色空間
Scalar colorM = mean(tImg); //計(jì)算整幅圖像的LAB顏色均值
//遍歷圖像
for (int r = 0; r < tImg.rows; r++)
{
float *s = sal.ptr<float>(r);
float *lab = tImg.ptr<float>(r);
for (int c = 0; c < tImg.cols; c++, lab += 3)
//計(jì)算每個(gè)像素LAB值與LAB均值的差,即為顯著性
s[c] = (float)(sqr(colorM[0] - lab[0]) + sqr(colorM[1] - lab[1]) + sqr(colorM[2] - lab[2]));
}
normalize(sal, *dst, 0, 1, NORM_MINMAX);
}
else //灰度域
{
Mat imgf, tImg;
imgf = *src;
if (imgf.channels() == 3)
{
cvtColor(imgf, imgf, COLOR_RGB2GRAY);
}
imgf.convertTo(imgf, CV_32FC1, 1.0 / 255);
Scalar colorM = mean(imgf);
GaussianBlur(imgf, tImg, Size(ksize, ksize), 0);
Mat sal(imgf.size(), CV_32F);
for (int r = 0; r < tImg.rows; r++)
{
float *s = sal.ptr<float>(r);
float *gray = tImg.ptr<float>(r);
for (int c = 0; c < tImg.cols; c++)
s[c] = (colorM[0] - gray[c])*(colorM[0] - gray[c]);
}
normalize(sal, *dst, 0, 1, NORM_MINMAX);
}
}
到此,相信大家對(duì)“opencv FT顯著性檢測(cè)算法怎么使用”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。