Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБ_ЦОС.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1 Мб
Скачать
☆

4.4 Контрольні питання

  1. Дробовий формат 1.15 чисел з фіксованою крапкою. Правила обчислення.

  2. Основні характеристики цифрового Ких-фильтра.

  3. Використання функцій remezord і remez СКМ MATLAB для обчислення коефіцієнтів Ких-фильтра.

  4. Особливості використання мови Си Visual DSP++. Склад стандартної бібліотеки функцій filters.h.

  5. Функція fir бібліотеки filters.h. Прототип, призначення параметрів, що повертається значення.

5 Вивчення основ обробки зображень у системі «matlab»

ЛАБОРАТОРНА РОБОТА №5

Ціль роботи: ознайомлення з основними процедурами обробки зображень системи «MATLAB».

5.1 Методичні вказівки до роботи

Перш, ніж розпочати розробку програм по обробці зображень для цифрових сигнальних процесорів, необхідно вибрати метод й алгоритм обробки, провести їхній аналіз й визначити оптимальні параметри процедур. Потім ці процедури повинні бути реалізовані у вигляді програмних модулів, написаних мовою Ci або асемблері конкретного сигнального процесора. Із практичної точки зору представляється найбільш доцільним проводити вищевказані дослідження в області обробки зображень із використанням системи MATLAB, що є зручним і досить простим інструментом дослідження й, крім того, у її склад входить компілятор мови MATLAB на мову С і бібліотека математичних функцій на C++. Таким чином, процедури обробки зображень, написані в системі MATIAB, без особливих труднощів перетворяться у виконуючи модулі для цифрових сигнальних процесорів сімейств 7MS й ADSP. Для дослідження методів обробки зображень у системі MATIAB 5.2 розроблений пакет Image Processing Toolbox, що включає широкий набір функцій. Пакет Image Processing Toolbox може бути доповнений шляхом написання користувачем власних нетипових функцій.

Нижче розглядаються переважно тільки функції алгоритми яких розглянуті на лекціях. З повним списком функцій й особливостями їхнього використання можна ознайомитися в середовищі MATLAB Command Window за допомогою команд help images й help ім'я функції..

Базовим типом даних в пакеті MATIAB є прямокутна матриця впорядкованої безлічі дійсних або комплексних елементів зображення. Тому доступ до довільного пикселу зображення здійснюється як до елемента матриці.

MATLAB 5.2 підтримує чотири типи зображень:

  1. кольорове індексоване;

  2. напівтонове;

  3. бінарне;

  4. кольорове RGB.

Для індексованого кольорового зображення потрібне наявність двох матриць: таблиці кольоровості й матриці індексів. Таблиця кольоровості (colormap) являє собою набір використовуваних у зображенні кольорів, а матриця індексів - набір номерів (індексів) від 0 до n-1 відповідних кольорів таблиці кольоровості. Розмір таблиці кольоровості залежить від кількості Nц використовуваних у зображенні кольорів і дорівнює Nц×З. Кожному індексу таблиці відповідають значення трьох RGB кольорів. Для відображення кожного із цих кольорів використаються дійсні числа з подвійною точністю в діапазоні від 0,0 (рівень чорного) до 1,0 (максимальна інтенсивність).

У напівтоновому типі зображення використається тільки одна матриця, що містить значення интенсивностей (рівнів сірого) кожного з пикселов. Значення інтенсивності представляються реальними числами з подвійною точністю в діапазоні від 0.0 до 1.0 , де рівень 0,0 відповідає чорному а 1,0 - білим кольорам.

У бінарному (чорно-білому) зображенні використається тільки два рівні: 0 - чорний й 1 - білі кольори. У системі MATIAB ці рівні представляються числами з подвійною точністю. Бінарні зображення можуть бути також представлені логічної (булевой) матрицею. У цьому випадку при обробці зображення застосовуються логічні операції.

У кольоровому RGB-зображенні використаються три матриці интенсивностей відповідних кольорів. Інтенсивності представляються реальними числами з подвійною точністю в діапазоні 0,0 - 1,0. Кольори й інтенсивність пикселов визначається комбінацією интенсивностей відповідних їм колірних компонентів.

Якщо тип оброблюваного зображення заздалегідь не відомий, то його можна визначити за допомогою функцій ISBW, ISGRAY, ISIND або ISRGB. Ці функції перевіряють на істинність відповідно бінарного чорно-білого, напівтонового, індексованого або кольорові RGB зображення. Загальний синтаксис функції FLAG=ISGRAY(A). Функція повертає 1, якщо це зображення интенсивностей рівня сірого, у противному випадку повертається 0.

При необхідності зображення деяких типів можуть бути конвертовані в інший тип, зокрема, можна перетворити індексовані зображення в напівтонової або кольорові RGB (функції IND2GRAY, IND2RGB), або зробити їхнє зворотне перетворення в індексовані (функції GRAY2IND, RGB2IND).

Наприклад, щоб прочитати з файлу floers.tif RGB-зображення й перетворити його в індексований тип з матрицею интенсивностей X і картою кольоровості (палітрою) mар, що містить 128 кольорів варто включити в програму наступні фрагменти.

RGB=Hmread ('flowers.tif');

[X, map]= rgb2ind(RGB,128);

imshow (X, map).

Інструментальні засоби MATLAB дозволяють обробляти зображення окремими фрагментами (по термінології МАТLAB- блоками) з використанням віконних функцій. Це дозволяє знизити витрату пам'яті комп'ютера й підвищити швидкість обробки. При цьому немає необхідності програмно задавати переміщення вікна (блоку) по зображенню. Задана функція автоматично виконується для кожного фрагмента всього оброблюваного зображення. Окремі блоки по черзі покривають матрицю зображення починаючи з лівого верхнього кута. Якщо блоки не укладаються в границях зображення, то відсутні пиксели автоматично заповнюються нулями. Аналогічне заповнення нулями виробляється при обробці пикселов, розташованих на краях зображення.

Для блокової обробки в Image Processing Toolbox використається процедура BLKPROC, що виділяє окремий блок (фрагмент) зображення й передає його у функцію визначену користувачем. Потім BLKPROC збирає повернуті функцією блоки для створення вихідного зображення. Функція, використовувана для обробки кожного блоку, повинна повертати матрицю того ж розміру, що й блок. Функція BLKPROC описується в такий спосіб:

В = BLKPROC (A, [m n], 'fun'),

де А - матриця вхідного, а В - вихідного зображення; [m n] - розмір фрагмента в пикселах; fun - функція обробки фрагмента. При використанні блокової обробки зображення за допомогою функції SIZ=BESTBLK([M N], К) можна попередньо знайти оптимальний розмір блоку. Тут М, N - розмір вихідного зображення, а К- граничні розміри шуканого блоку.

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

А = IMREAD (FILENAME, FMT)

або

[X, MAP] = IMREAD (FILENAME, FMT).

У першому випадку проводиться читання зображення з файлу. Якщо зображення напівтонове, то А являє собою двовимірний масив значень інтенсивності елементів зображення. У випадку триколірного (RGB) зображення А є тривимірним масивом розміром MxNx3. FMT специфицирує формат подання зображення. Серед форматів подання графічних зображень використаються bmp, Jpeg, .pcx, .tif і ряд інших.

Функція [X, MAP] = IMREAD (FILENAME, FMT) читає індексоване зображення з файлу в X , а карту кольорів - в MAP.

Функція IMWRITE (A, FILENAME, FMT) - записує зображення А в файл з ім'ям FILENAME і форматом FMT , a IMWRITE (X, MAP, FILENAME, FMT) - записує у файл індексоване зображення X і пов'язану з ним карту кольорів mар.

Функція IMCROP (I, [XMIN YMIN WIDTH HEIGHT]) - вирізує фрагмент зображення заданого розміру. Тут XMIN, YMIN - задають початкові координати прямокутного фрагмента, a WIDTH, HEIGHT - кількість колонок і рядків фрагмента відповідно. Прямокутник може бути також визначений за допомогою миші.

Функція IMHIST(I,N) - відображає гистограму розподілу інтенсивності пикселей зображення I із числом рівнів інтенсивності N. За замовчуванням N приймається рівним 256.

Функція EDGE - визначає границі інтенсивності зображення. При цьому як параметри функції вказується метод визначення границі, рівень порога й ряд інших.

Функція HISTEQ поліпшує контраст зображення за рахунок вирівнювання гистограми.

IMNOISE(I,TYPE, ...) додає до зображення интенсивностей I аддитивний гауссовский або мультиплікативний шум типу TYPE . Для кожного типу шуму додатково задаються його параметри.

Для фільтрації зображень використаються функції FILTER2 й FSPECIAL(TYPE) . У другій функції специфікація TYPE задає тип використовуваного лінійного або нелінійного фільтра. Зокрема може бути заданий один з наступних типів

'gaussian' - гауссовский низькочастотний фільтр ;

'sobel' - виділення границь на основі оператора Собела ;

'previt' - виділення границь на основі оператора Превіта ;

'laplacian' - з використанням оператора Лапласа

'average' - усредняющий фільтр .

Крім цього використаються й інші функції фільтрації. Серед них MEDFILT2 - медіанний фільтр; WIENER2 - адаптивний шумоподавляющий винеровский фільтр.

У складі MATIAB є широкий набір функцій для різних перетворень зображень (Image transforms), зокрема

DCT2 й IDCT2 - обчислення двовимірного прямого й зворотного дискретно-косинусного перетворення відповідно;

FFT2 , FFTn, IFFT2 , IFFTn- прямі й зворотні, двовимірні й n-мірне швидкі перетворення Фур'є;

RADON - перетворення Радону й ряд інших. Нижче приводяться приклади використання різних функцій системи MATLAB для обробки зображень.

Приклад 1. Використання різних функцій для обробки зображень.

>>I=imread('forest.tif);% Читання зображення з %файлу.

>>IC=imcrop(I,[50 100 40 60]; %Виріз фрагмента із вказівкою координат його початку й розмірів

>>imshow(I),figure(2),imshow(IC) %відображення повного й усіченого зображення.

>>J=imnoise(I,'gaussian',0,0.05); %вплив на зображення гауссовской перешкоди з нульовим середнім і нормованим среднеквадратическим відхиленням,рівним 0.05.

>>figure(3),imshow(J) % відображення на екрані зашумленного зображення.

>>M=medfilt2(J); % медіанна фільтрація.

>>W=wiener2(J,[3 3]); % Винеровская фільтрація.

>>figure(4),imshow(M),figure(5),imshow(W)

>>figure(6),imhist(I),figure(7),imhist(IС); %Одержання й відображення на екрані гистограмм повного й усіченого зображень.

>>BWs=edge(I,'sobel'); % виділення контурів з використанням оператора Собела.

>>BWp=edge(I,'prewitt'); % виділення контурів з використанням операторів Превіта.

>>figure(1),imshow(PWs),figure(2),imshow(PWp) %відображення гистограмм.

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

Приклад 2. Скласти програму стиску зображення з використанням дискретно-косинусного перетворення й функцій блокової обробки.

>>load trees % завантаження вхідного зображення.

>>I=ind2gray(X,map); % перетворення індексованого зображення в напівтонове.

>>J=blkproc(I, [8 8],'dct2'); % поблочне дискретно-косинусное перетворення із блоком 8x8

>>nz=find(abs(J)< 0.1); % знаходження індексів пикселов, інтенсивність яких менше 0.1

>>J(nz)= zeros(size(nz)); % заміна цих пикселов нульовим значенням (властиво стиск)

>>K=blkproc(J,[8 8],'idct2'); % поблочне відновлення зображення

>>imshow(I), figure, imsho(K) % перегляд вихідного й відновленого зображень

Приклад 3 Контрастування зображення.

% Приклад демонструє контрастування зображення.

>>I=imread('pout.tif'); % Читання зображення з файлу.

>>imshow(I);

% Побудова гистограммы вихідного зображення.

>>figure, imhist(I);

%Контрастування вихідного зображення.

>>I=imadjust(I,[0 180]/255,[],2.5);

%Вивід перетвореного зображення на екран.

>>figure, imshow(I);

%Вивід гистограммы перетвореного зображення

>>figure, imhist(I);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]