Необхідні операції з обробки зображень перед узгодженням шаблону


13

Ну, це може показувати, що я не брав клас обробки зображень.

У мене є цей шаблон, який відповідає об'єкту в зображеннях. Але реальний об'єкт у зображеннях, наприклад, виглядає не так, а другий образ. Які операції потрібно зробити, щоб зображення, як і друге, були готові до відповідності шаблону? FYI, третє зображення показує ідеальну відповідність.

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

ОНОВЛЕННЯ: Проблема вирішена. Завдяки відповіді, яку я вибрав нижче. Мені вдалося застосувати свій шаблон до зображення. Останнє зображення показує результат.

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

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

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


ти не збираєшся відповідати тій білій сітці, чи не так? Ви хочете відповідати фактичній барвистій сітці у вашому другому зображенні, правда?
ендоліт

@endolith Я думаю, що будь-який спосіб добре.
Tae-Sung Shin

Ви можете поділитися базовою концепцією свого алгоритму? мені потрібно зробити те ж саме для діаграми.
Гілад

Відповіді:


9

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

Виправлення перспективної проекції, коли відома форма

Кінцева мета попередньої обробки - знайти куточки того сірого прямокутника, який є фоновою кольоровою діаграмою. Я почав з простого порогу з постійним значенням. У літературі / Інтернеті є багато інформації про те, як зробити порогове значення, коли зображення має нерівномірне освітлення, але якщо ви можете, спробуйте виправити налаштування зображення таким чином, щоб освітлення було відносно рівним.

Поріг із постійною величиною

Я припускав, що кольорова діаграма займає досить велику частину екрана, тому це, мабуть, найбільша безперервна область зображення. Існує безліч чорно-білих функцій маркування (MATLABs bwlabel, IPP LabelMarkers, OpenCV має зовнішню бібліотеку cvblob), яка дасть кожному окремому підключеному регіону свій власний індекс. Після маркування ви можете розрахувати площі підключених компонентів за допомогою гістограми, а потім вибрати компонент з найбільшою площею.

Знайдіть найбільшу крапку

Зазвичай корисно заповнити компоненти таким чином, щоб у компонента не було отворів, це зменшує кількість крайових пікселів.

Заливаємо крапку

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

Знайдіть ребра

Оскільки об'єктом, який нас цікавить, є прямокутник, я встановив чотири лінії до крайових пікселів, використовуючи надійну підгонку ліній (RANSAC). Знайшовши нову лінію, я видалив усі точки, які були близькі до знайденої лінії, це змусило подальших операцій підгонки повернути інші краї об'єкта. Нарешті, коли були знайдені всі ребра, я обчислив усі можливі перетини між набором ліній. З набору отриманих точок я видалив усі точки поза зображенням.

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

x=HX

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

Прилягайте лінії до країв

Як видно, залишається лише радіальне викривлення. Коли ми використовували перетворення для перетворення зображення (2D-інтерполяція), ми вибрали такі інтерполяційні координати, що ми знаємо точне дозвіл зображення, тобто, тепер ми знаємо, наприклад, розмір літер.H

Якщо ми все-таки хочемо зробити якесь узгодження шаблону, ми можемо використовувати будь-який пристойний метод відповідності шаблонів. Метод не повинен бути інваріантним поворотом / масштабом, оскільки зображення вже виправлено.

Правильна перспектива


1

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

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