日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于彩色圖像高斯反向投影基于OpenCV的C++代碼

OpenCV學(xué)堂 ? 來源:OpenCV學(xué)堂 ? 作者:OpenCV學(xué)堂 ? 2022-05-31 10:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

彩色圖像高斯反向投影

一:介紹

圖像反向投影的最終目的是獲取ROI然后實現(xiàn)對ROI區(qū)域的標(biāo)注、識別、測量等圖像處理與分析,是計算機(jī)視覺人工智能的常見方法之一。圖像反向投影通常是彩色圖像投影效果會比灰度圖像效果要好,原因在于彩色圖像帶有更多對象細(xì)節(jié)信息,在反向投影的時候更加容易判斷、而轉(zhuǎn)為灰度圖像會導(dǎo)致這些細(xì)節(jié)信息丟失、從而導(dǎo)致分割失敗。最常見的是基于圖像直方圖特征的反向投影。我們這里介紹一種跟直方圖反向投影不一樣的彩色圖像反向投影方法,通過基于高斯的概率分布公式(PDF)估算,反向投影得到對象區(qū)域,該方法也可以看做最簡單的圖像分割方法。缺點(diǎn)是對象顏色光照改變和尺度改變不具備不變性特征。所以需要在光照度穩(wěn)定情況下成像采集圖像數(shù)據(jù)。 在這種情況下使用的高斯概率密度公式為:

ca2d336c-e030-11ec-ba43-dac502259ad0.png

  1. 輸入模型M,對M的每個像素點(diǎn)(R,G,B)計算I=R+G+B r=R/I, g=G/I, b=B/I

  2. 根據(jù)得到權(quán)重比例值,計算得到對應(yīng)的均值 與標(biāo)準(zhǔn)方差

  3. 對輸入圖像的每個像素點(diǎn)計算根據(jù)高斯公式計算P(r)與P(g)的乘積

  4. 歸一化之后輸出結(jié)果,即為最終基于高斯PDF的反向投影圖像

二:算法步驟與代碼實現(xiàn)

  1. 首先加載模型圖像與測試圖像

  2. 根據(jù)模型圖像計算得到每個通道對應(yīng)的均值與標(biāo)準(zhǔn)方差參數(shù)

  3. 根據(jù)參數(shù)方差計算每個像素點(diǎn)的PDF值

  4. 歸一化概率分布圖像-即為反向投影圖像,顯示

  5. 根據(jù)Mask得到最終顏色模型對象分割

完整的基于OpenCV的C++代碼如下:


	
  1. #include

  2. #include

  3. #include

  4. using namespace cv;

  5. using namespace std;

  6. int main(int argc, char** argv) {

  7. // 加載模型圖像與測試圖像

  8. Mat src = imread("D:/gloomyfish/gc_test.png");

  9. Mat model = imread("D:/gloomyfish/gm.png");

  10. if (src.empty() || model.empty()) {

  11. printf("could not load image... ");

  12. return -1;

  13. }

  14. imshow("input image", src);

  15. // 對每個通道 計算高斯PDF的參數(shù)

  16. // 有一個通道不計算,是因為它可以通過1-r-g得到

  17. // 無需再計算

  18. Mat R = Mat::zeros(model.size(), CV_32FC1);

  19. Mat G = Mat::zeros(model.size(), CV_32FC1);

  20. int r = 0, g = 0, b = 0;

  21. float sum = 0;

  22. for (int row = 0; row < model.rows; row++) {

  23. uchar* current = model.ptr(row);

  24. for (int col = 0; col < model.cols; col++) {

  25. b = *current++;

  26. g = *current++;

  27. r = *current++;

  28. sum = b + g + r;

  29. R.at(row, col) = r / sum;

  30. G.at(row, col) = g / sum;

  31. }

  32. }

  33. // 計算均值與標(biāo)準(zhǔn)方差

  34. Mat mean, stddev;

  35. double mr, devr;

  36. double mg, devg;

  37. meanStdDev(R, mean, stddev);

  38. mr = mean.at(0, 0);

  39. devr = mean.at(0, 0);

  40. meanStdDev(G, mean, stddev);

  41. mg = mean.at(0, 0);

  42. devg = mean.at(0, 0);

  43. int width = src.cols;

  44. int height = src.rows;

  45. // 反向投影

  46. float pr = 0, pg = 0;

  47. Mat result = Mat::zeros(src.size(), CV_32FC1);

  48. for (int row = 0; row < height; row++) {

  49. uchar* currentRow = src.ptr(row);

  50. for (int col = 0; col < width; col++) {

  51. b = *currentRow++;

  52. g = *currentRow++;

  53. r = *currentRow++;

  54. sum = b + g + r;

  55. float red = r / sum;

  56. float green = g / sum;

  57. pr = (1 / (devr*sqrt(2 * CV_PI)))*exp(-(pow((red - mr), 2)) / (2 * pow(devr, 2)));

  58. pg = (1 / (devg*sqrt(2 * CV_PI)))*exp(-(pow((green - mg),2)) / (2 * pow(devg, 2)));

  59. sum = pr*pg;

  60. result.at(row, col) = sum;

  61. }

  62. }

  63. // 歸一化顯示高斯反向投影

  64. Mat img(src.size(), CV_8UC1);

  65. normalize(result, result, 0, 255, NORM_MINMAX);

  66. result.convertTo(img, CV_8U);

  67. Mat segmentation;

  68. src.copyTo(segmentation, img);

  69. // 顯示

  70. imshow("backprojection demo", img);

  71. imshow("segmentation demo", segmentation);

  72. waitKey(0);

  73. return 0;

  74. }

三:測試圖像與效果演示

藍(lán)色矩形框為模型,整個圖像為測試圖像

ca537e82-e030-11ec-ba43-dac502259ad0.jpg

反向投影結(jié)果

ca6bdc70-e030-11ec-ba43-dac502259ad0.jpg

分割提取結(jié)果

cab28b66-e030-11ec-ba43-dac502259ad0.jpg

四:總結(jié)

大家看了這個例子總是有點(diǎn)怪怪的,總會想起點(diǎn)什么,如果你能想起點(diǎn)什么的話就是GMM,高斯混合模型,高斯混合模型正是在此基礎(chǔ)上進(jìn)一步演化而來。

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 圖像
    +關(guān)注

    關(guān)注

    2

    文章

    1096

    瀏覽量

    42449
  • 投影
    +關(guān)注

    關(guān)注

    0

    文章

    147

    瀏覽量

    25452
  • 圖像分割
    +關(guān)注

    關(guān)注

    4

    文章

    182

    瀏覽量

    18829

原文標(biāo)題:彩色圖像高斯反向投影

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    手搓C++離散小波變換DWT程序

    關(guān)于小波變換,我們當(dāng)然可以選擇速度更快地方式來使用它。和python相比,C++編譯后的代碼在對同一組參數(shù)配置并且處理同一組數(shù)據(jù),在沒有優(yōu)化的情況下,處理速度可以快達(dá)10倍上,均不包括把結(jié)果寫入csv文件步驟的時間。下圖中的19
    的頭像 發(fā)表于 04-22 14:15 ?99次閱讀
    手搓<b class='flag-5'>C++</b>離散小波變換DWT程序

    沒有專利的opencv-python 版本

    功能 圖像基礎(chǔ)操作 讀取/保存(imread/imwrite)、縮放/旋轉(zhuǎn)、裁剪、通道分離/合并 圖像處理 灰度轉(zhuǎn)換、閾值分割、形態(tài)學(xué)操作(腐蝕/膨脹)、模糊(高斯/中值模糊)、銳化 特征檢測
    發(fā)表于 12-13 12:37

    【GM-3568JHF開發(fā)板免費(fèi)體驗】OpenCV開發(fā)環(huán)境安裝和計數(shù)程序開發(fā)

    count3.py 運(yùn)行事先準(zhǔn)備好的圖像識別程序,運(yùn)行結(jié)果如圖所示 五、OpenCV圖像識別計數(shù) 5.1、代碼程序 # -*- coding: utf-8
    發(fā)表于 08-09 13:30

    技能+1!如何在樹莓派上使用C++控制GPIO?

    和PiGPIO等庫,C++可用于編程控制樹莓派的GPIO引腳。它提供了更好的性能和控制能力,非常適合對速度和精度要求較高的硬件項目。在樹莓派社區(qū)中,關(guān)于“Python
    的頭像 發(fā)表于 08-06 15:33 ?4529次閱讀
    技能+1!如何在樹莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    Perforce QAC產(chǎn)品簡介:面向C/C++的靜態(tài)代碼分析工具(已通過SO 26262認(rèn)證)

    Perforce QAC專為C/C++開發(fā)者打造,支持多種編碼規(guī)范、功能安全標(biāo)準(zhǔn)(ISO 26262)等,廣泛用于汽車、醫(yī)療、嵌入式開發(fā)領(lǐng)域,可幫助快速識別關(guān)鍵缺陷、提升代碼質(zhì)量、實現(xiàn)合規(guī)交付。
    的頭像 發(fā)表于 07-10 15:57 ?1497次閱讀
    Perforce QAC產(chǎn)品簡介:面向<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>的靜態(tài)<b class='flag-5'>代碼</b>分析工具(已通過SO 26262認(rèn)證)

    基于LockAI視覺識別模塊:C++人臉識別

    人臉模板進(jìn)行比較來實現(xiàn)識別。 2. C++ API 文檔 2.1 FaceRecognitionSystem類 2.1.1 頭文件 #include <
    發(fā)表于 07-01 12:01

    基于LockAI視覺識別模塊:C++目標(biāo)檢測

    本文檔基于瑞芯微RV1106的LockAI凌智視覺識別模塊,通過C++語言做的目標(biāo)檢測實驗。 本文檔展示了如何使用 lockzhiner_vision_module::vision
    發(fā)表于 06-06 14:43

    基于LockAI視覺識別模塊:C++條碼識別

    的方法來集成條碼識別功能,使得開發(fā)者可以輕松實現(xiàn)從圖像捕捉到數(shù)據(jù)解碼的過程。用戶只需簡單操作即可快速獲取條碼中的信息,極大提高了效率和便利性。 2. C++ API文檔 2.1
    發(fā)表于 05-27 10:26

    基于LockAI視覺識別模塊:C++二維碼識別

    ZXing和OpenCV支持快速集成到應(yīng)用中,使用戶能輕松掃描并獲取二維碼信息。 2. C++ API文檔 2.1 QRCodeDetector類 2.1.1 頭文件 #include <
    發(fā)表于 05-26 09:57

    基于LockAI視覺識別模塊:C++輪廓檢測

    本文檔展示了如何使用 OpenCV 進(jìn)行圖像處理和特征檢測,包括邊緣檢測、直線檢測、圓檢測以及多邊形擬合。通過這些技術(shù),可以實現(xiàn)對攝像頭捕獲的實時視頻流進(jìn)行分析,并標(biāo)記出檢測到的特征。 源代碼地址
    發(fā)表于 05-22 10:05

    基于LockAI視覺識別模塊:C++多模板匹配

    /master/Cpp_example/C03_Template_Matching_more 1. 基本知識講解 1.1 多模板匹配的重要幸 目標(biāo)檢測:多模板匹配可以用于檢測圖像中的多個特定對象。 應(yīng)用場
    發(fā)表于 05-14 15:00

    基于LockAI視覺識別模塊:C++模板匹配

    /Cpp_example/C02_TemplateMatching 1. 基本知識講解 1.1 模板匹配的重要性 目標(biāo)檢測:模板匹配可以用于檢測圖像中的特定對象。 應(yīng)用場景:廣泛應(yīng)用于物體識別、工業(yè)自動化
    發(fā)表于 05-13 14:40

    基于LockAI視覺識別模塊:C++使用圖像的統(tǒng)計信息

    ./Test-Image-information-statistics 5.2 運(yùn)行效果 在運(yùn)行上述代碼時,會輸出以下結(jié)果: 6. 總結(jié) 通過上述內(nèi)容,我們介紹了如何使用 OpenCV 提取圖像的 ROI、轉(zhuǎn)換顏色空間、計算
    發(fā)表于 05-08 10:31

    基于LockAI視覺識別模塊:C++圖像的基本運(yùn)算

    圖像處理中,理解圖像的基本操作是掌握計算機(jī)視覺技術(shù)的關(guān)鍵。本文章將介紹 基于LockAI視覺識別模塊下OpenCV圖像的基本運(yùn)算方法,包括像素操作、邏輯運(yùn)算和差值運(yùn)算,并通過一個
    發(fā)表于 05-06 16:56

    基于LockAI視覺識別模塊:C++圖像的基本運(yùn)算

    圖像處理中,理解圖像的基本操作是掌握計算機(jī)視覺技術(shù)的關(guān)鍵。本文章將介紹基于LockAI視覺識別模塊下OpenCV圖像的基本運(yùn)算方法,包括像素操作、邏輯運(yùn)算和差值運(yùn)算,并通過一個綜合
    的頭像 發(fā)表于 05-06 16:20 ?844次閱讀
    基于LockAI視覺識別模塊:<b class='flag-5'>C++</b><b class='flag-5'>圖像</b>的基本運(yùn)算
    无为县| 利津县| 德令哈市| 阳谷县| 德州市| 通辽市| 扶风县| 拜城县| 香河县| 应用必备| 崇文区| 漠河县| 平顺县| 环江| 泾川县| 湘潭市| 新沂市| 高陵县| 萝北县| 邢台市| 余干县| 水富县| 广灵县| 太湖县| 措勤县| 本溪| 泰和县| 正阳县| 平果县| 洛浦县| 方山县| 大庆市| 准格尔旗| 治县。| 屯门区| 天柱县| 淅川县| 苏尼特左旗| 中西区| 富阳市| 昭觉县|