婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > OpenCV機(jī)器學(xué)習(xí)MeanShift算法筆記分享

OpenCV機(jī)器學(xué)習(xí)MeanShift算法筆記分享

熱門(mén)標(biāo)簽:萊蕪電信外呼系統(tǒng) 企業(yè)微信地圖標(biāo)注 沈陽(yáng)防封電銷(xiāo)電話(huà)卡 地圖標(biāo)注多個(gè) 鶴壁手機(jī)自動(dòng)外呼系統(tǒng)違法嗎 高德地圖標(biāo)注收入咋樣 怎么辦理400客服電話(huà) 銀川電話(huà)機(jī)器人電話(huà) B52系統(tǒng)電梯外呼顯示E7

MeanShift算法

Mean shift 是一種機(jī)器學(xué)習(xí)算法,并不僅僅局限于圖像上的應(yīng)用。關(guān)于 Mean shift 算法介紹的書(shū)和文章很多,這里就不多介紹了。簡(jiǎn)單的說(shuō),Meanshift 算法是一種迭代算法,需要給一個(gè)初始的區(qū)域,然后這個(gè)算法會(huì)反復(fù)的調(diào)整這個(gè)區(qū)域,使得這個(gè)區(qū)域最吻合我們期望的特征。

OpenCV 中有兩處用到了 Mean Shift 。分別是:

pyrMeanShiftFiltering

meanShift

這里只介紹第二個(gè)函數(shù)的使用方法。

我們的原始圖像還是上次那個(gè)向日葵的圖像,我們選中其中一朵向日葵來(lái)計(jì)算 Histogram,但是這次我們計(jì)算 Hue 通道的 Histogram:

之后用這個(gè)直方圖數(shù)據(jù)在另外一個(gè)圖像中用 Meanshift 算法去找向日葵。

下面是代碼,首先加載原始圖像。在原始圖像中找到向日葵,計(jì)算向日葵區(qū)域的 Histogram。

    cv::Mat image = cv::imread("D:\\向日葵.jpg");
    cv::Mat imageROI = image(cv::Rect(130, 250, 75, 75));
    ColorHistogram hist;
    cv::Mat h = hist.getHueHistogram(imageROI, 65);
    cv::imshow("pic", image);
    ContentFinder finder;
    finder.setHistogram(h);
    finder.setThreshold(-1.0f);

之后加載我們要探測(cè)的圖像,做 backproject,得到概率分布圖。

    cv::Mat image2 = cv::imread("D:\\02.jpg");
    cv::Mat hsv;
    cv::cvtColor(image2, hsv, CV_BGR2HSV);
    int ch[1] = {0};
    cv::Mat probImage = finder.find(hsv, 0.0, 180, ch);
    cv::Mat img_color;
    cv::applyColorMap(probImage, img_color, cv::COLORMAP_JET);
    cv::imshow("backproject", img_color);

最后 Meanshift 就是在右圖中找出概率最大的那個(gè)區(qū)域。對(duì)于這個(gè)問(wèn)題來(lái)說(shuō),其實(shí)做個(gè)遍歷就行。

meanshift 相比遍歷效率更高。但是如果初始區(qū)域選的不好,有可能會(huì)找不到向日葵所在的區(qū)域。

所以meanshift 并不是萬(wàn)能的。

    cv::Rect rect(100, 100, 200, 200);
    cv::rectangle(image2, rect, cv::Scalar(255,0,0));
//    cv::TermCriteria criteria(cv::TermCriteria::MAX_ITER, 30, 1);
    cv::TermCriteria criteria(cv::TermCriteria::MAX_ITER | cv::TermCriteria::EPS,
                              10,
                              1);
    cv::meanShift(probImage, rect, criteria);
    cv::rectangle(image2, rect, cv::Scalar(0,0,255));
    cv::imshow("image2", image2);

下面是輸出結(jié)果,藍(lán)框是我們隨便選的初始區(qū)域,紅框是得到的結(jié)果。可以看到準(zhǔn)確的找到了向日葵所在區(qū)域。

如果我們初始區(qū)域選的不太好,就會(huì)找不到向日葵。比如下面的代碼。

    cv::Rect rect(0, 0, 200, 200);
    cv::rectangle(image2, rect, cv::Scalar(255,0,0));
    cv::TermCriteria criteria(cv::TermCriteria::MAX_ITER | cv::TermCriteria::EPS,
                              10,
                              1);
    cv::meanShift(probImage, rect, criteria);
    cv::rectangle(image2, rect, cv::Scalar(0,0,255));
    cv::imshow("image2", image2);

可以看到迭代了10次,但是區(qū)域一點(diǎn)沒(méi)動(dòng)。一般來(lái)說(shuō)我們可以隨機(jī)選擇初始區(qū)域,如果一個(gè)區(qū)域 meanshift失敗了,就再隨機(jī)選另一個(gè)區(qū)域。這樣試幾次就能得到不錯(cuò)的結(jié)果。

以上就是OpenCV機(jī)器學(xué)習(xí)MeanShift算法筆記分享的詳細(xì)內(nèi)容,更多關(guān)于OpenCV機(jī)器學(xué)習(xí)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • 在OpenCV里使用Camshift算法的實(shí)現(xiàn)
  • python實(shí)現(xiàn)mean-shift聚類(lèi)算法
  • Opencv基于CamShift算法實(shí)現(xiàn)目標(biāo)跟蹤

標(biāo)簽:湘西 呼倫貝爾 呼倫貝爾 葫蘆島 銀川 安慶 三亞 烏魯木齊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《OpenCV機(jī)器學(xué)習(xí)MeanShift算法筆記分享》,本文關(guān)鍵詞  OpenCV,機(jī)器,學(xué)習(xí),MeanShift,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《OpenCV機(jī)器學(xué)習(xí)MeanShift算法筆記分享》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于OpenCV機(jī)器學(xué)習(xí)MeanShift算法筆記分享的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 东山县| 苍山县| 来凤县| 运城市| 隆德县| 苏尼特左旗| 沂水县| 茌平县| 久治县| 碌曲县| 启东市| 广宁县| 洱源县| 景泰县| 甘肃省| 南宫市| 师宗县| 汉寿县| 新宁县| 上虞市| 陆丰市| 电白县| 阆中市| 云安县| 绿春县| 高邮市| 岑巩县| 慈利县| 东乌珠穆沁旗| 富蕴县| 元氏县| 塔城市| 开鲁县| 盐城市| 罗江县| 文山县| 漯河市| 武强县| 延津县| 涡阳县| 胶州市|