Хорошо, ребята, я застреваю, пытаясь создать сопоставление гистограммы для двух изображений; образ шаблона и изображение назначения (назначение означает изображение, в котором я хочу совместить изображение шаблона). Вместо отображения совпадающего изображения я получаю пустое изображение. Я чувствую, что я измучен этим, поэтому я пришел к SO. Может ли кто-нибудь вести меня в правильном направлении?Соответствие исходного изображения целевому изображению в python
Любая помощь в правильном направлении будет оценена по достоинству.
def matching(template, target, numberOfBins=256):
templateHist, bins1 = np.histogram(template.flatten(), numberOfBins, density = False)
targetHist, bins2 = np.histogram(target.flatten(), numberOfBins, density = False)
cdfTemplate = templateHist.cumsum() #Cumulative distributed function
cdfTemplate = (255 * cdfTemplate/cdfTemplate[-1]) #normalize
cdfTarget = targetHist.cumsum()
cdfTarget = (255 * cdfTarget/cdfTarget[-1]).astype(np.float64)
im2 = np.interp(template.flatten(), cdfTemplate, bins1[:-1])
im3 = np.interp(im2, cdfTarget, bins2[:-1])
result = im3.reshape((template.shape))
return result
Смотрите здесь: http://stackoverflow.com/q/32655686/1461210 –
это означает, что cdfTemplate [-1] возвращает 0. – Li357
сообщение об ошибке говорит вам, что 'cdfTemplate [-1]' является равный 0, что приводит к тому, что все элементы в 'cdfTemplate' становятся NaN. Это означает, что сумма 'templateHist' также должна быть равна 0. Труднее объяснить, почему это должно быть так, учитывая, что он состоит из подсчетов битов гистограммы, и автоматический выбор краев бункера гистограммы должен гарантировать, что по крайней мере один бит содержит ненулевой счетчик. Что такое «шаблон» и «цель»? Я предполагаю, что они маскированные массивы? –