Зображення в цифровому вигляді являє собою матрицю виду [1]:
де f (1,1) - яскравість пікселя зображення.
У даній лабораторній роботі для зручності будуть розглядатися напівтонові зображення. Напівтонові зображення представляють собою матриці класу uint8 або uint16. Якщо зображення класу uint8, то його значення яскравості визначені на інтервалі [0 255], якщо uint16 - на інтервалі [0 65535]
Оскільки Matlab містить досить велику кількість команд для роботи з зображенням, будуть розглянуті лише деякі основні з них.
Введення / висновок і запис зображення
Введення зображення здійснюється за допомогою функції imread
де f - змінна, що зберігає матрицю елементів зображення, path - місце розташування графічного файлу на комп'ютері.
Для виведення зображення на екран використовується функція imshow (A), де A - матриця пікселів завантаженого зображення.
>> f = imread ( `F: /Images/boat.jpg ');
Результатом виконання останньої команди буде висновок на екран вікна з завантаженим зображенням.
Малюнок 5 - вікно виведення зображення на екран
Зверніть увагу, якщо існує необхідність виведення на екран кількох зображень, то перед новим викликом функції imshow необхідно писати ключове слово figure для формування нового вікна виведення.
>> f1 = imread ( `F: /Images/boat.jpg ');
Малюнок 6 - Висновок декількох зображень на екран
Для збереження зображення використовується функція imwrite (f, path), де f - зберігається зображення, path - повне ім'я файлу.
>> f = imread ( `F: /Images/boat.jpg ');
Варто відзначити, що виведене на екран зображення або графік можна легко зберегти, вибравши у вікні File / Save As
Побудова гістограми зображення
Висновок на екран гістограми зображення здійснюється за допомогою функції imhist,
h = imhist (image, b)
де h - отримана гістограма зображення, image - зображення, b - число кошиків, які використовуються при формуванні гістограми (за замовчуванням приймає значення 256) [1].
Гістограму зображення можна піддати процедурі еквалізациі для поліпшення якості зображення. Гістограмного еквалізація - операція, яка полягає в збільшенні динамічного діапазону зображення, здійснюється за допомогою функції histeq.
g = histeq (image, nlev).
де g - еквалізованная гістограма, image - вихідне зображення, nlev - число рівнів інтенсивності, встановлене вихідного зображення [1].
imshow (f)% Висновок вихідного зображення на екран
figure, imhist (f); % Висновок на екран гістограми зображення
f1 = histeq (f, 256); % Отримання нового зображення з еквалізованной гистограммой
figure, imshow (f1)% Висновок на екран покращення зображення
figure, imhist (f1)% Висновок на екран еквалізованной гістограми
У наведеному вище прикладі динамічний діапазон зображення було розширено до 256. У результаті еквалізациі гістограми вихідного зображення було покращено його якість, що добре видно на малюнку 7
Малюнок 7 - Початкове зображення і його гістограма
Малюнок 8 - Покращена зображення і його гістограма
Усічення і геометричні перетворення зображень
Для усічення зображення використовується операція вибору елементів масиву в певному діапазоні по висоті і ширині. Тобто використовується стандартна операція, пов'язана з індексацією матриць. наприклад:
>> f = imread ( 'F: / Images /boat.jpg');
Малюнок 9 - Зображення до і після усічення
Для зміни розміру зображення використовується функція imresize, синтаксис якої:
image = imresize (picture, [rows columns])
де picture - вихідне зображення, [rows columns] - масив, що зберігає висоту і ширину кінцевого зображення.
>> f = imread ( 'F: / Images /boat.jpg');
f1 = imresize (f, [256 256]);
Поворот зображення реалізований функцією imrotate, що має наступний синтаксис:
Image = imrotate (зображення, кут)
>> f = imread ( 'F: / Images /boat.jpg');
f1 = imrotate (f, 30);
Малюнок 10 - Поворот зображення на 30 градусів
зашумлення зображень
Існує кілька шумів, за допомогою яких можна здійснити псування зображення, наприклад шум "Сіль і перець", Гаусів шум і спекл-шум.
Зашумлення зображення здійснюється за допомогою функції
Image = imnoise (зображення, `тип шуму ', рівень шкідливого впливу)
Тип шуму може набувати таких значень:
· `Salt pepper '
>> f = imread ( 'F: /M/boat.jpg');
>> f1 = imnoise (f, 'salt pepper ', 0.1); % Застосування до вихідного зображення шуму
Малюнок 11 - зашумлення зображення