Регулювання значень інтенсивностей
Існує можливість установки значень інтенсивностей на зображенні за допомогою функції imadjust, де вказано діапазон інтенсивностей результуючого зображення.
Розглянемо приклад збільшення контрасту зображення з низьким рівнем контрастності шляхом перерозподілу значень даних на весь діапазон [0, 255].
На малюнку відображено перетворене зображення і його гістограма. Відзначимо, що в результаті посилення контрасту зображення, гістограма заповнює весь діапазон.
Перетворене зображення і його гістограма
Опис регулювання кордонів діапазону
Існує можливість опису діапазону вихідних і результуючих значень з використанням функції imadjust. Для цього в функції imadjust як аргумент вказуються діапазони у вигляді двох векторів. Перший вектор містить найменше та найбільше значення інтенсивностей вихідного зображення, які будуть відображені тим діапазоном яркостей, який вказаний в другому векторі.
Примітка.
Відзначимо, що значення інтенсивностей повинні знаходиться в діапазоні між 0 і 1, незалежно від формату зображення. Якщо зображення представлено в форматі uint8, діапазон значень містить 255 градацій, а для зображення в форматі - 65535 градацій.
Наприклад, зменшення контрасту зображення досягається за рахунок зменшення діапазону інтенсивностей. На зображенні внизу, пальто людини занадто темне і на ньому не видно деталей. Але це можна виправити за допомогою функції imadjust, відобразивши діапазон [0,51] вихідного зображення в форматі uint8 в діапазон [128,255] перетвореного зображення. Це перетворення значно розширить динамічний діапазон, і поліпшить візуальне сприйняття темних областей зображення. Відзначимо також, що всі значення інтенсивностей вище 51, будуть відображатися як 255, тобто білим кольором.
Зображення після перетворення динамічного діапазону
Установка обмежень автоматичної корекції
Зазвичай при використанні функції imadjust необхідно виконати два основних дії:
Простіший шлях для опису цих кордонів полягає у використанні функції stretchlim.
Ця функція обчислює гістограму зображення і визначає межі коригування діапазону автоматично. Функція stretchlim повертає ці значення в вигляді вектора, який використовується як аргумент у функції imadjust. наприклад,
За замовчуванням, функція stretchlim використовує значення інтенсивностей, які представляють нижню 1% (0.01) і верхню 1% (0.99) частину діапазону в якості кордонів регулювання.
Функція imadjust відображає найменші значення ще меншими, а найбільші - ще більшими. За замовчуванням проміжні значення відображаються лінійно. Наприклад, значення інтенсивностей, які знаходяться посередині діапазону інтенсивностей вихідного зображення відповідають тим значенням інтенсивностей, які знаходяться посередині діапазону перетвореного зображення.
У функції imadjust можна вказувати додатковий аргумент, який описує ступінь гамма корекції. Залежно від значення гами, залежність між значеннями вихідного і перетвореного зображення може бути нелінійної. Тому значення інтенсивностей, які знаходяться посередині діапазону інтенсивностей вихідного зображення не відповідають тим значенням інтенсивностей, які знаходяться посередині діапазону перетвореного зображення.
Параметр гамма може приймати значення від 0 до нескінченності. Якщо гамма дорівнює 1 (за замовчуванням), тоді перетворення лінійне. Якщо гамма менше 1, то діапазон з малими значеннями інтенсивності стискається, а діапазон з великими значеннями інтенсивності розтягується. Якщо гамма більше 1, то навпаки - діапазон з малими значеннями інтенсивності розтягується, а діапазон з великими значеннями інтенсивності розтягується.
Сказане вище продемонстровано на малюнку. Три кривих перетворення показують відображення значень інтенсивностей при різних значеннях гамма - менше, так само і більше одиниці. (На зображенні x-координата представляє значення інтенсивностей вихідного зображення, а y-координата - значення інтенсивностей результуючого зображення.)
Відображення трьох різних установок гамма-корекції
Розглянемо приклад гамма корекції зображення. Відзначимо, що при використанні функції imadjust діапазони даних вихідного і результуючого зображень описані у вигляді порожніх матриць. Якщо вони описані таким чином, тобто у вигляді порожніх матриць, то функція imadjust використовує весь діапазон [0,1]. Результат застосування такого підходу показаний на зображенні.
Зображення до і після застосування гамма корекції
Контрастно-обмежене адаптивне вирівнювання гістограми
В якості альтернативи можна використовувати функцію histeq, яка виконує контрастно-обмежену адаптивну гістограмного еквалізацію з використання функції adapthisteq. Функція працює з цілим зображенням, а функція adapthisteq може працювати з невеликими областями зображення. Контраст кожної частини зображення підвищується, що пов'язано зі зміною форми гістограми. Після виконання вирівнювання (еквалізациі), функція adapthisteq об'єднує краю локальних областей із застосуванням билинейной інтерполяції, виключаючи штучно створені кордони.
Щоб уникнути посилення шуму на зображеннях, можна використовувати функцію adapthisteq зі спеціальними параметрами для обмеження контрасту, що особливо важливо для гомогенних (однорідних) областей.
Для ілюстрації розглянемо використання функції adapthisteq при корекції контрасту на зображенні. Початкове зображення має низький контраст, більшість значень інтенсивностей зосереджено в середині діапазону. Функція adapthisteq виконує рівномірний розподіл значень інтенсивностей вздовж усього діапазону.
Зображення після обробки методом контрастно-обмеженого адаптивного вирівнювання гістограми (і його гістограма)
Декорреляціонное розтягнення покращує співвідношення кольорів на зображенні з урахуванням кореляційних залежностей. При поліпшенні зображень дуже важливо знайти межу поліпшення, щоб надмірне поліпшення не приводило до виникнення неіснуючих деталей. Тому доцільно застосовувати метод декорреляціонного розтягування, який реалізовує функція decorrstretch.
У більшості випадків кількість квітів в зв'язці NBANDS на зображенні дорівнює трьом. Функція decorrelation може застосовуватися незалежно від кількості кольорів в зв'язці.
При перетворенні значень вихідних кольорів зображення діапазон відображення, в більшості випадків, збільшується. Інтенсивності кольорів кожного пікселя перетворюються в власне колірне простір з ковариационной або кореляційної матрицею з розмірністю NBANDSxNBANDS, розтягуються, вирівнюються і трансформуються назад.
Приклад декорреляціонного розтягування
Застосуємо операції декорреляции і розтягування до деяких зображень з бібліотеки, яка розміщена в директорії imdemos системи Matlab. Бібліотека включає LANDSAT-зображення невеликої річки в Колорадо. Опрацюємо це зображення методом декорреляціонного розтягування:
- Зображення складається з семи діапазонів, які повинні бути представлені трьома видимими квітами:
- Виконуємо декорреляціонное розтягнення:
- Візуалізація результатів:
Порівняємо два зображення. На оригінальному документі сильно переважає фіолетовий (червоно-синій) відтінок, а результуюче зображення має більш розтягнутий колірний діапазон.
Зображення невеликої річки в Колорадо до (зліва) і після (праворуч) декорреляціонного розтягування
Покажемо розкид квітів різних діапазонів зображення до і після декорреляции і вирівнювання:
Розкид квітів різних діапазонів зображення до і після декорреляции і вирівнювання
Додаткове лінійне розтягнення контрасту
Зараз розглянемо таке ж перетворення, але мова буде йти про лінійному розтягуванні контрасту, яке можна застосувати після декорреляціонного розтягування:
Порівняємо вихідне і перетворене зображення.
Зображення невеликої річки в Колорадо після декорреляціонного розтягування і лінійного розтягування контрастів
Лінійне розтягнення контрастів є ще одним додатковим засобом поліпшення після розтягування колірного діапазону зображення. У нашому випадку розтягнення колірного діапазону стосується кожної колірної складової.
Для отримання більш детальної інформації див. Опис функції stretchlim.
Примітка.
Лінійне розтягнення контрасту можна застосовувати як окрему операцію після виконання декорреляціонного розтягування, використовуючи функції stretchlim і imadjust. Це є одним з альтернативних шляхів, проте, часто не приводить до гарних результатів для зображень, які представлені в форматі uint8 і uint16. Такий результат пояснюється розподілом пікселів в діапазоні [0 255] (або [0 65535]). Опції функції decorrstretch дозволяють обійти це обмеження.
Цифрові зображення можуть бути чутливими до різних типів шумів. Існує кілька основних причин появи шуму, які залежать також від способу формування зображень. наприклад:
- Якщо ви отримуєте зображення шляхом сканування фотографічної плівки, то зерна плівки є джерелом шуму. Поява шуму може порозуміються також пошкодженням самої плівки або вноситься сканирующим пристроєм.
- Якщо зображення захоплено в цифровому форматі, то механізм формування даних (CCD-детектор, квантірованіе) є джерелом шуму.
- Електронна передача даних зображення також може бути джерелом шуму.
Додаток забезпечує кілька шляхів повного або часткового усунення шуму на зображеннях. Для усунення різних видів шуму розроблені різні методи. Серед них
- Використання лінійної фільтрації;
- Використання медіанної фільтрації;
- Використання адаптивної фільтрації.
Для демонстрації ефекту від роботи перерахованих вище методів в додатку існує функція imnoise, яка додає на зображення різні типи шуму. Розглянемо приклади використання цієї функції.
Використання лінійної фільтрації
Лінійну фільтрацію можна використовувати для видалення шумів певного типу. Для цього годяться такі фільтри як усереднюючий і фільтр Гаусса. Наприклад, усереднюючий фільтр використовується для видалення зернистості на зображеннях. Оскільки значення інтенсивності кожного пікселя дорівнює середньої інтенсивності пікселів околиці, то це призводить до придушення зернистості.
Використання медіанної фільтрації
Медіанна фільтрація схожа на використання усредняющего фільтра, де значення інтенсивності кожного пікселя є усереднене значення інтенсивностей пікселів відповідної околиці. У багатьох випадках використання медіанного фільтра при вирішенні задач усунення шуму є більш ефективним, ніж звичайне усереднення. Застосування медіанної фільтрації призводить до менших спотворень кордонів, в порівнянні з операцією усереднення. Функція medfilt2 виконує медіанну фільтрацію.
Примітка.
Медіанна фільтрація є порядкової-статистичної фільтрацією і відома ще як рангова фільтрація. Для більш детальної інформації див. Опис функції ordfilt2.
Розглянемо приклад, в якому можна порівняти використання усредняющего фільтра і функції medfilt2 для видалення шуму типу "сіль і перець". Вплив цього типу шуму полягає в тому, що випадково вибрані пікселі стають чорними або білими (тобто їм присвоюються екстремальні значення з існуючого діапазону). В обох випадках розмір використовуваної околиці дорівнює 3x3.
- Зчитування зображення з файлу і його візуалізація.
Використання адаптивної фільтрації
В основі функції wiener2 лежить винеровский фільтр (один з типів лінійного фільтра) для адаптивної локальної обробки зображень. Якщо значення середньоквадратичного відхилення інтенсивностей пікселів в даній локальній області велике, то wiener2 виконує невелике згладжування. Якщо ж це відхилення невелике, то область згладжування більше.
Цей підхід часто буває більш ефективним, ніж звичайна лінійна фільтрація. Перевага адаптивний фільтра ще полягає в тому, що він зберігає краю та інші високочастотні частини об'єктів зображення. Однак, винеровский фільтр вимагає більшого часу для обчислень, ніж лінійний фільтр.
Функція wiener2 краще працює з "білим" шумом, наприклад гауссовским. Розглянемо приклад застосування функції wiener2 до обробки зображення Сатурна, яке зашумлено гаусовим шумом. Для інтерактивної демонстрації фільтрації шуму можна використовувати nrfiltdemo.
Зашумлене зображення (зліва) і зображення після фільтрації (праворуч)
Для демонстрації роботи методів усунення шуму використовуються зображення з різними видами зашумленности. Для формування цих зображень використовується функція imnoise. До речі, зображення, наведені в цьому розділі, сформовані з використанням цієї функції.