Arhn - архитектура программирования

Как использовать интегральное изображение для обнаружения изменений интенсивности внутри области интереса?

Я изучаю способы обнаружения изменений уровней серого в изображениях, но работаю только в определенной их области, и я наткнулся на интегральное изображение. Я думаю, что его можно использовать для этого, просто выбрав область на изображении и сравнив средний уровень серого (или что-то в этом роде) с другими областями.

Но мой вопрос в том, возможно ли (или есть ли способ) вычислить интегральное изображение только интересующей меня конкретной области общего изображения (важная область смешивается в разных частях общего изображения).

Ваше здоровье


  • Я понимаю, что вы пометили это с помощью python, но вы можете сделать это в MATLAB, используя: 'I = imread('cameraman.tif'); J = IntegerImage(I(1:50,1:50))', где 1:50, 1:50 — ROI. Я предполагаю, что в python должно быть что-то подобное, особенно в API openCV: docs.opencv.org/2.4/modules/imgproc/doc/ 02.01.2018
  • Ваш вопрос сбивает с толку. Предлагаю перефразировать. Зафиксирован ли ваш ROI на холсте изображения? Если да, то использование интегрального изображения не дает никаких улучшений. Если нет, то это помогает, только если вы сравниваете с эталонным изображением, которое никогда не меняется или меняется редко по сравнению с текущим. 02.01.2018
  • Да, моя идея состояла в том, чтобы сравнить изображение с эталоном, который всегда имеет известный уровень серого. Извините за путаницу. О ROI всегда меняется 03.01.2018

Ответы:


1

Я не думаю, что интегральный образ является наиболее адекватным инструментом для этой задачи. Обнаружение изменений интенсивности в ROI может быть легко реализовано путем сравнения значений интенсивности в ROI с помощью any и нарезка, как показано ниже.

Для начала импортируем необходимые модули и загружаем несколько примеров изображений:

import numpy as np
from skimage import io
import matplotlib.pyplot as plt

reference = io.imread('https://i.stack.imgur.com/9fmvl.png')
same = io.imread('https://i.stack.imgur.com/u1wlT.png')
changed = io.imread('https://i.stack.imgur.com/H2dIu.png')

Вот как выглядят изображения:

fig, [ax0, ax1, ax2] = plt.subplots(1, 3)
ax0.imshow(reference)
ax0.axis('off')
ax0.set_title('Reference')
ax1.imshow(same)
ax1.axis('off')
ax1.set_title('Same')
ax2.imshow(changed)
ax2.axis('off')
ax2.set_title('Changed')
plt.show(fig)

Образцы изображений

Затем мы определяем функцию, которая возвращает True всякий раз, когда есть хотя бы один пиксель области интереса, интенсивность которого на тестовом изображении отличается от интенсивности эталонного изображения:

def detect_change(ref, img, roi):
    upper, left, lower, right = roi
    return np.any(ref[upper:lower, left:right] != img[upper:lower, left:right])

Наконец, нам просто нужно настроить ROI (красный квадрат) и вызвать detect_change с соответствующими аргументами:

In [73]: roi = [32, 32, 96, 96]

In [74]: detect_change(reference, same, roi)
Out[74]: False

In [75]: detect_change(reference, changed, roi)
Out[75]: True
08.02.2018
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..