Вычисление суммы прямоугольных характеристик волос с использованием интегрального изображенияPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Вычисление суммы прямоугольных характеристик волос с использованием интегрального изображения

Сообщение Anonymous »

Я хотел использовать код этого парня для расчета интегрального изображения и областей суммирования для функций Хаара, потому что не мог найти ничего другого надежного и не хотел делать это сам. Но теперь кажется, что этот код все равно не работает, и я не могу заставить его работать, но хочу, чтобы он работал, используя дополненное интегральное изображение.
Я просто не совсем понимаю. понять, что вводить для функции sum_region. Он вычисляет интегральное изображение, используя to_integral_image(), и это правильно, но я не понимаю, что такое функция sum_region, которая, похоже, у меня не работает когда я тестировал это, все переворачивание координат и заполнение интегрального изображения смутило меня, и я не могу разобраться в этом, это действительно расстраивает.
Интеграл для меня был рассчитано идеально, но Функция sum_region(), похоже, просто не работает. Я попробовал добавить по одному к обеим координатам Bottom_right, но в крайних случаях это не сработало.
Если бы кто-нибудь мог помочь мне преодолеть этот раздражающий умственный туман, я бы очень ценю это.
import numpy as np

def sum_region(integral_img_arr, top_left, bottom_right):
"""
Calculates the sum in the rectangle specified by the given tuples.
:param integral_img_arr:
:type integral_img_arr: numpy.ndarray
:param top_left: (x, y) of the rectangle's top left corner
:type top_left: (int, int)
:param bottom_right: (x, y) of the rectangle's bottom right corner
:type bottom_right: (int, int)
:return The sum of all pixels in the given rectangle
:rtype int
"""
# swap tuples
top_left = (top_left[1], top_left[0])
bottom_right = (bottom_right[1], bottom_right[0])
if top_left == bottom_right:
return integral_img_arr[top_left]

top_right = (bottom_right[0], top_left[1])
bottom_left = (top_left[0], bottom_right[1])
return integral_img_arr[bottom_right] - integral_img_arr[top_right] - integral_img_arr[bottom_left] + integral_img_arr[top_left]

Я пробовал ввести обычный индекс индексированного массива с нулевым значением и распечатать результаты, но заполнение и переворачивание координат просто сбивают с толку, и я не могу уяснить это все.
Это то, что я использовал для тестирования.
import numpy as np
from integral_image import *

original_image = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
],)

integral = to_integral_image(original_image)
print(original_image)
print(integral)

# region in the original image

top_left = (0,0)
bottom_right = (2,1)
sum = sum_region(integral, top_left, bottom_right)
print(f"Original Top left: {original_image[top_left]}")
print(f"Original Bottom Right {original_image[bottom_right]}")

print(f"Sum: {sum}")


Подробнее здесь: https://stackoverflow.com/questions/792 ... gral-image
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»