摘要:理論直方圖反向投影用于圖像分割或查找圖像中感興趣的對象簡單來說,它會創(chuàng)建一個與輸入圖像大小相同單個通道的圖像其中每個像素對應(yīng)于屬于我們對象該像素的概率輸出圖像將使我們感興趣的對象比其余部分更明顯首先,我們創(chuàng)建一個包含我們感興趣對象的圖像的
Histogram - 4 : Histogram Backprojection
理論直方圖反向投影用于圖像分割或查找圖像中感興趣的對象,簡單來說,它會創(chuàng)建一個與輸入圖像大小相同(單個通道)的圖像,其中每個像素對應(yīng)于屬于我們對象該像素的概率.輸出圖像將使我們感興趣的對象比其余部分更明顯.
首先,我們創(chuàng)建一個包含我們感興趣對象的圖像的直方圖,對象應(yīng)盡可能填充圖像以獲得更好的結(jié)果,顏色直方圖比灰度直方圖更受青睞,因為對象的顏色比灰度強度更能定義對象,然后我們將這個直方圖“反投影”到我們需要找到對象的測試圖像上.
OpenCV中的反投影OpenCV提供了一個內(nèi)置函數(shù)cv.calcBackProject()。 它的參數(shù)與cv.calcHist()函數(shù)幾乎相同. 此外,在傳遞給backproject函數(shù)之前,應(yīng)該對象直方圖進行標準化. 它返回概率圖像,然后我們將圖像與內(nèi)核卷積并應(yīng)用閾值.
代碼:
import cv2 import numpy as np from matplotlib import pyplot as plt # roi是我們需要找到的對象或區(qū)域 roi = cv2.imread("img_roi.png") hsv = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV) # target是我們搜索的圖像 target = cv2.imread("img.jpg") hsvt = cv2.cvtColor(target, cv2.COLOR_BGR2HSV) # 計算對象的直方圖 roihist = cv2.calcHist([hsv], [0,1], None, [180,256], [0,180,0,256]) # 標準化直方圖,并應(yīng)用投影 cv2.normalize(roihist, roihist, 0, 255, cv2.NORM_MINMAX) dst = cv2.calcBackProject([hsvt], [0,1], roihist, [0,180,0,256], 1) # 與磁盤內(nèi)核進行卷積 disc = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5,5)) cv2.filter2D(dst, -1, disc, dst) # 閾值、二進制按位和操作 ret, thresh = cv2.threshold(dst, 50, 255, 0) thresh = cv2.merge((thresh, thresh, thresh)) res = cv2.bitwise_and(target, thresh) res = np.vstack((target, thresh, res)) cv2.imshow("res", res) cv2.waitKey()
原圖:
感興趣區(qū)域:
結(jié)果:
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42038.html
摘要:算法的基本原理簡單假設(shè)我們有一堆點,和一個小的圓形窗口,算法就是不斷移動小圓形窗口,直到找到圓形區(qū)域內(nèi)最大灰度密度處為止初始窗口以藍色圓圈顯示,名稱為其原始中心標有藍色矩形,名為但是,這個窗口當(dāng)中所有點的點集構(gòu)成的質(zhì)心在藍色圓形點處圓環(huán)的型 Meanshift and Camshift Meanshift Meanshift 算法的基本原理簡單,假設(shè)我們有一堆點,和一個小的圓形窗口,...
閱讀 856·2023-04-25 21:21
閱讀 3237·2021-11-24 09:39
閱讀 3079·2021-09-02 15:41
閱讀 2009·2021-08-26 14:13
閱讀 1839·2019-08-30 11:18
閱讀 2786·2019-08-29 16:25
閱讀 517·2019-08-28 18:27
閱讀 1590·2019-08-28 18:17