Які методи обробки зображень ідеально підходять для конкретного зсуву / масштабу інваріантного узгодження шаблону?


17

Проблема, про яку я спочатку обговорював тут , розвинулася і, можливо, стала трохи простішою, коли я вивчала її ще в деяких випадках і отримувала нову інформацію.

Підсумок, я хотів би мати можливість виявити цю картину, показану тут, використовуючи методи комп’ютерного зору / обробки зображень. Як бачите, ідеальний візерунок складається з чотирьох «пінгів». Розпізнавання об'єкта повинно бути:

  • Зміна інваріантна
    • Горизонтально зображення буде циклічним. (тобто, натисніть праворуч, виходить зліва і навпаки).
    • (На щастя) Вертикально, це не циклічно. (тобто натисніть на верхню або нижню частину, і вона зупиниться).
  • Інваріант масштабу (пінг може змінюватись в "товщині", як ви бачите.)

Я можу продовжувати і продовжувати це робити, але я додав зображення, що стосуються того, що я маю на увазі, будь ласка, дивіться нижче:

введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення

Звичайно, вони також можуть бути в іншому "масштабі", як видно з цієї родини:

введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення

І, нарешті, ось кілька «реалістичних» сценаріїв того, що я можу насправді отримати, де лунатиме шум, рядки можуть «згасати», коли ви йдете до дна, і, звичайно, на зображенні буде багато хибних ліній, артефактів тощо.

введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення введіть тут опис зображення

І звичайно, як великий фінал, існує чітка можливість цього "екстремального" сценарію:

введіть тут опис зображення

Тож ще раз я хотів би попросити декілька вказівок щодо того, які методи комп’ютерно-машинного зору я повинен використовувати тут, щоб найкраще визначити появу моєї картини, де мені потрібно змінити масштаб і інваріантно, як ви бачите, і також мати можливість отримати гідні результати для реалістичних сценаріїв. (Хороша новина полягає в тому, що мені НЕ потрібно, щоб він був ротаційно інваріантним). Єдина ідея, яку мені вдалося придумати поки що, - це 2-D кореляція.

Додам, що насправді я НЕ маю кольорових зображень - я просто отримаю мартикс чисел, тож я гадаю, що ми говоримо про "відтінки сірого".

Спасибі заздалегідь!

PS Для чого варто, я, мабуть, буду використовувати відкритий C V.

ЗРІД №1:

На основі коментарів я додав деталі, які ви тут просили:

Для характеристик, що визначають дані, можна припустити наступне:

  • Горизонтальна довжина кожного пінга може змінюватися, але я знаю верхню і нижню межі його. ТАК для будь-чого в межах цієї межі, НІ для нічого зовнішнього. (Наприклад, я знаю, що довжина пінгів може бути від 1 до 3 секунд, наприклад).

  • Усі такси повинні бути "видимими" для ТАК, проте останній рядок може бути відсутнім, і все ж хочеться сказати "ТАК". Інакше НІ.

  • Вертикальна довжина ("товщина") кожного пінгу може змінюватися, але, знову ж таки, також знати верхню та нижню межі. (Подібно до того, що ви бачите на цих зображеннях). ТАК для чого-небудь у межах цієї межі. НІ для чогось зовні.

  • Висота між кожним пінг завжди повинна бути однаковою для ТАК. Якщо їх немає, то НІ. (Наприклад, ви можете бачити, як усі пінг однакової висоти відносно один одного, ~ 110 по вертикальній осі). Так що 110 +/- 5 може бути ТАК, все інше повинно бути НІ.

Я думаю, що це з цього приводу - але дайте мені знати, що ще я можу додати ... (Крім того, все, що показано тут, має реєструватися як ТАК, btw).


Що ти маєш на увазі, коли кажеш detect this pattern shown here? Ви просто зацікавлені в виділенні червоної / жовтої лінії або ви дійсно хочете вираження, яке обчислює зв’язок між такими лініями. Лише знаходження ліній може зажадати лише певного порогу чи сегментації. Чого ти насправді хочеш?
Діпан Мехта

@DipanMehta Вибачте за плутанину. Що я хочу зробити, це так: по-перше, не звертайте уваги на кольори, (це лише мовляв, вони були накреслені), те, що у мене буде, є лише матрицею чисел, так відтінки сірого. По-друге, оскільки немає кольорів, я просто дбаю про «візерунок», який ви бачите там із 4 пінгами, які ви бачите повторення. Тож детектор побачить варіанти цього шаблону зображення, як показано на малюнках вище, і скаже «так, цей шаблон існує». Вибачте за плутанину, дайте мені знати, чи можу я щось уточнити. Спасибі!
Спейсі

Гаразд, тож ви, якщо я правильно зрозумів, враховуючи, що на першому рядку зверху, ви хочете з’ясувати, чи баланс теж у тому ж місці. якби так, ви б зробили висновок, що закономірність існує! Правильно?
Діпан Мехта

@DipanMehta Так, в основному, вміти визначати, чи є показаний вище шаблон, достатньо надійний, щоб вирішити масштабну інваріантність, і достатньо надійний для боротьби зі змінною інваріантністю. Чи має це сенс? Дякую,
Spacey

1
Я отримую це - чи маєте ви доступ до вихідних даних у фактичній системі, над якою працюєте. Якщо це зробити, то, можливо, буде кращий підхід, який працює над вихідними даними безпосередньо замість проміжного формату спектрограми, для якого ви нульові.
Джейсон R

Відповіді:


6

Загалом, існує два основні підходи до вирішення цієї проблеми:

а. відповідність шаблону або
b. узгодження з параметризованою моделлю.

Особисто, враховуючи простоту моделі, я вважаю за краще другий підхід до цієї проблеми.

Крок 1: Визначте краплі пінг

В якості першого кроку витягніть "Коробки" - по суті жовті / сині квадрати. Найпростішим методом тут може бути просто обмеження зображення. Здається, не дуже багато варіацій у фоновому режимі, за винятком того, що при збільшенні шуму він, як правило, дуже схожий на пінг. Отже, поріг може бути глобальним у всьому зображенні - і я думаю, ви зможете отримати гідний поріг, який би працював на зображеннях. Поріг, однак, повинен бути розумним, щоб ви могли використовувати щось на зразок методу Оцу. Дивіться це та це для отримання додаткової довідки.

Поліпшення блоків

Одне з хороших речей, які ви можете зробити, щоб видалити помилкові точки, схожі на передній план пінгу, де деякі пікселі всередині пінг також сині. Вам потрібна тут морфологічна операція під назвою "Відкриття". Ось один із посилань від HIPR . Цей тип операцій вимагає розумної форми, яка допомагає зберегти подібні форми і видалити інші. У вашому випадку ви можете вибрати горизонтальні лінії. Наприкінці цього у вас пікселі фону та переднього плану акуратно розділяють пінг, не торкаючись один одного.

Крок 2: Позначити / зареєструвати блоки

Тепер, коли у вас є найчистіші можливі краплі, час позначати їх як 1,2,3,4 або A, B, C, D і т.д. Це, як правило, здійснюється за допомогою простого алгоритму. Пробігайте кожен піксель, і якщо він торкається будь-якої позначеної області, а також передній план, тоді присвойте йому цей сегмент, ще створіть новий. Якщо у вас трапляється більше 4 важливих сегментів, вам потрібно вибрати найбільш релевантний. Тут застосувати деякий евристичний, а не будь-який теоретичний алгоритм.

Крок 3: Моделювання параметрів

Тепер, коли ми отримаємо найімовірніших чотирьох найкращих кандидатів із 4 відповідних пінг, ви можете визначити обмежувальні поля - по суті, верхній лівий і нижній правий кути (або лівий і правий більшість пікселів, а також верхній і нижній рядки блобу) . Знайдіть обмежувальне поле, ви можете оштрафувати центральну частину кожного поля для пінг.

Ci where i{1,2,3,4}C1C1

отже, тепер можна розрахувати міжцентрові відстані:

C1i[x,y]={C1[x]Ci[x],C1[y]Ci[y]}

Li where i{1,2,3,4}

По суті у вас є 8 параметрів vecoter:

1.{C1[x],C1[y]}2..4C1i[x,y]5..8Li

Крок 4: Класифікація
На останньому кроці тепер нам потрібно провести класифікацію, чи є пінг-шаблон так чи ні.

Для чогось подібного ви можете мати приємну байєсівську систему класифікаторів.

У вас є дві гіпотези

H0: Шаблон ping існує.
H1: Шаблон ping не існує

C1,i[x]

Спершу ви вивчаєте багато зображень, де ви знаєте, що вони належать до зображення. Тепер ви можете побудувати різні гістограми або застосувати якийсь метод оцінки щільності. Прочитайте класифікацію шаблонів Дуди Харт.

C1,i[x]μ=20,σ=.1

C1,iH0P[C1,i[x]|H0]

Тепер із даних тесту

П[Н0|С1,i[х]=х1]С1[х]х1Н0

Отже, ви можете зробити обчислення

П[Н0 |С1,i[х]]=П[С1,i[х]|Н0]П[Н0]П[С1,i[х]]

Вам потрібно поєднати цей вираз для векторного виразу і потрібно докласти чимало зусиль, щоб точно поставити оцінку параметрів, що потрібно зробити. Але я залишаю тут базовий підхід.

Будь ласка, займайтеся своєю математикою, це буде тривалим, але все одно має бути досить інтуїтивним.

П[Н0|всі параметри]>1/2

EDIT
Оскільки ви вже визначаєте конкретні критерії 110 +/- 5 пікселів, останній крок може бути простішим. Можливо, вам не зовсім потрібно обчислювати всі ці ймовірності, якщо ваш критерій класифікації фіксований.


Велике спасибі! Мені доведеться перетравити це і повернутися до вас.
Космічний

3

Ця проблема здається мені подібною до виявлення інтервалу повторення імпульсу + проблема оцінки. Мені потрібно буде розробити цю відповідь у часі, але такі алгоритми, які добре працюють у цій проблемі, - це максимальна ймовірність решітки .


Дякую, так, я буду рада почути ваші думки з цього приводу. Тим часом я перегляну ваше посилання.
Спейси

Пітер, ти коли-небудь міг подумати над цим, як ти згадав? Мені було б цікаво почути ваші думки з цього приводу.
Спейсі

Тільки що знову почав майструвати (квітень був списаним). Я можу помилитися: те, як формулює проблему Кларксон, інша проблема: дозвольте мені копати трохи більше.
Петро К.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.