17
Т е х н и ч е с к и У н и в е р с и т е т - В а р н а Факултет по електроника КУРСОВА РАБОТА ТЕМА: обработка на изображения в матлаб Изготвили: Мартин Гочев Ф. № 51151142 Константин Иванов Ф. № 51151154 Проверил:................................. КТТ, I курс ,V поток /доц. Н. Костов/

КР по СиС изображения в матлаб

Embed Size (px)

DESCRIPTION

обработка на изображения в матлаб

Citation preview

Page 1: КР по СиС изображения в матлаб

Т е х н и ч е с к и У н и в е р с и т е т - В а р н а

Факултет по електроника

КУРСОВА

РАБОТА

ТЕМА: обработка на изображения в матлаб

Изготвили:

Мартин Гочев Ф. № 51151142

Константин Иванов Ф. № 51151154 Проверил:.................................

КТТ, I курс ,V поток /доц. Н. Костов/

Page 2: КР по СиС изображения в матлаб

Видове цифрови изображения Ще разгледаме четири основни типа изображения: Binary (бинарни,двоични).При тях всеки пиксел е или бял или черен.Понеже има само две дискретни стойности за всеки пиксел(0-черен,1-бял),те заемат само един бит за пиксел.Този вид изображения могат да бъдат много ефективни за съхранение на данни.Изображения за които се използва двоично представяне са подходящи за съхранение на текст(принтиран или ръкописен),отпечатъци или технически чертежи. Пример е даден с изображение 1.4(б). В него има само два цвята, бяло-за ръбовете и черно-като фон.

Greyscale(скала на сивото).Всеки пиксел е нюанс на сивото,обикновенно от 0(черно) до 255(бяло) .Този цветови обхват означава че всеки пиксел може да бъде представен чрез 8бита ,или точно един байт.Това е типичният диапазон при обработка.Този тип изображения се използват в медицината(рентгенови лъчи),изображения на печатни творби и други. Пример е даден с фигура 1.1 :

True colour, or RGB(изображения с пълна гама цветове).Тук всеки пиксел си има отделен цвят.този цвят описва нюанса на червеното,зеленото и синьото в него.Ако всеки от тези компоненти е от ранга на 0-255,това прави общо 255^3=16„777„216 различни възможни цвята в изобважението.

Page 3: КР по СиС изображения в матлаб

Такова изображение може да се разглежда като състоящо се от сбора на три матрици представящи стойностите на червеното,зеленото и синьто за всеки пиксел.Това означава че на всеки пиксел съответстват три стойности.Пример е даден на фигурата отдолу:

Червено Зелено Синьо Indexed(индексирани).Повечето цветни изображения притежават само една малка част от 17-те милиона възможни цвята.За удобство при съхранение и обработка изображението е асоциирано с цветова карта или казано по друг начин цветова палитра,която представлява списък от всички цветове използвани в изображението. Всеки пиксел си има стойност на която не е зададен цвят(както при RGB изображенията)а е зададена стойност на цвят от палитрата. Това е удобно ако изображението има 256 цвята или по-малко –тогава за индексните стойности щее нужен само 1 байт.Някои файлови формати (например .GIF),позволяват само до 256 цвята в изображение точно поради тази причина. Пример:

Page 4: КР по СиС изображения в матлаб

Обрабраза на това изображение индикира не нюанси на сивото,а даден цвят от цветовата карта.Без цветова карта изображението ще бъде безцветно и много тъмно

Форматите изображения потдържани от Matlab

BMP

HDF

JPEG

PCX

TIFF

XWB

Повечето изображения които ще намерите в интернет са в JPEG формат,който е един от

най разпространените стандарти за компресия на изображения.

Как да конвертираме между различни формати в матлаб:

-Конвертиране между наситен/индексиран/RGB формат към бинарен формат става с

команда dither()

- Конвертиране от интензивен формат към индексиран формат става със gray2ind()

- Конвертиране от индексиран формат към интензивен формат става със ind2gray()

- Конвертиране от индексиран формат към RGB със ind2rgb()

-Конвертиране на обикновенна матрица към интензивен формат чрез мащабиране -

mat2gray()

- Конвертиране от RGB към наситен формат rgb2gray()

- Конвертиране от RGB към индексиран формат rgb2ind()

Командата mat2gray е полезна ако имате матрица отговаряща на изображение,но

стойностите представляват стоиности да речем между 0 и 1000.Тази команда автоматично

преизчислява стойностите така че те да бъдат между 0 и 255 или между 0 и 1.

Същност на обработката на изображения:

Обработката на изображения представлява промяна на естестввото на изображение с цел:

1) Да подобри информацията на дадено изображение за по-добро визуално възприятие

2) Да го направи по-подходящо за възприятие от автономна машина. Ние ще се съсредоточим върху обработката при която използваме компютър за да променим „природата“ на цифрово изображение.Необходимо е да се осъзнае че тези два аспекта биват различни ,но еднакво важни за обработката на изображения.Процедура която удовлетворява условие (1)-процедура която прави едно изображение да изглежда „по-добре“,може да бъде много лоша

Page 5: КР по СиС изображения в матлаб

процедура за удовлетворяване на условие (2).Хората искат техните изображения да бъдат ясни,изчистени и детайлни.При машинна обработка се предпочита те да бъдат опростени и подредени. Примери за 1. могат да включват:

• Подобряване на границите на изображение за да изглежда по-ясно;пример за това е показан на фигура 1.1 отдолу.Забележете как втората картинка изглежда „исчистена“,тя е с по-приятен образ.Изясняването(изострянето) на границите е жизненоважен компонент при принтирането : за да може изображението да изглежда възможно най-добре на отпечатаната страница.

1.1(а) първоначално изображение 1.1(b) резултат след „изостряне“ • Премахване на“ шум“ от изображение;шумът представлява случаини

грешки в изображение.Примери са дадени на фигура 1.2. Шумът е често срещан проблем при предаването на данни: всички видове електронни компоненти могат да повлиаят на данните преминаващи през тях ,а резултатите от това са нежелателни.Шум може да се прояви в много и различни форми,всеки вид шум изисква различен метод за неговото отстраняване

Page 6: КР по СиС изображения в матлаб

1.2(а) първоначално изображение 1.2(б) След изчистване на шума

• Премахване на „размазване при движение“ от изображение.Пример

е даден във фигура 1.3. Забележете че в обработеното изображение (b) е по-лесно да се прочете номерът и да се видят шиповете на оградата зад колата,също така се виждат и други детаили които не се виждат ясно в оригиналното изображение (a). Размазване от движение може да се причини когато скоростта на затвора на камерата е по-малка от скоростта на обекта.При фотографиране на бързо движещи се обекти: лекоатлети или коли например,проблемът с размазването може да бъде значителен.

1.3(а) първоначално изображение 1.3(б) След премахване на замазването Примери за 2. могат да включват: • Получаване на границите(ръбовете) на изображението.Това може да

е необходимо при измерване на обекти в изображене(пример 1.4),след като вече имаме границите,ние можем да измерим тяхното разпространяване и площта,съдържаща се в тях.

Page 7: КР по СиС изображения в матлаб

1.4(а) оригинално изображение 1.4(б) неговите „граници“ От резултата се вижда че може да е необходимо леко да се изсветли оригиналното изображение за да бъдат границите му по-ясни Размиване(прамахване на детайли от изображение).Когато трябва да се измерваме или изброяваме обекти, ние не сме заинтерсовани от детайлите в изображението.Например една машина инспектираща елементи на поточна линия не се интерисува от друго освен форма,размер или цвят.При такива случаи ,е по-добре да опростим изображението.Фигура 1.5 показва пример: на изображението(а) е показано африканско животно а фигура (б) представлява замъглена версия в която външни детайли(като дърветата на заден фон) са премахнати.Забележете че в изображение (б) детайлността я няма,това което е останало е само грубата структура на изображението.Можем например да измерим размера и формата на животното без да бъдем "разсейвани" от излишни детайли.

(a) оригинално изображение (б) замъгляване(за премахване на детайла) Размиването (blur)в същността си е линеен филтър. Неговата идея се състои в това да осредни стойностите на текущия пиксел и съседните на него пиксели.

Page 8: КР по СиС изображения в матлаб

Така се получава ефект на размазване, от където идва и името на филтъра. Размиването може да се използва и за корекция на изображения, в които има шум. Осреднявайки стойностите на съседните пиксели шумът се приглушава, но контурите в изображението също се размиват. Като цяло изображението губи детайлност. Има два основни вида размиване – обикновено и Гаусово. При обикновеното размиване пикселите, участващи в осредняването, имат еднаква тежест, т.е. коефициентите, попълнени във филтърната матрица, са равни на 1. Обикновеното размиване има подобна матрица:

При Гаусовото размиване колкото по-далеч е даден пиксел от текущия пиксел, толкова по-малка тежест има той. С други думи, коефициентът в средата на филтърната матрица, отговарящ на текущия пиксел, е най-голям. Коефициентите, намиращи се непосредствено до него в дясно, в ляво, отгоре и отдолу, са по-малки, и т.н. Така при резултата по-силно определящи са по-близките пиксели, като централният (текущият) е най-силно определящ. Гаусовото рамиване има подобна матрица:

Обработка в Матлаб

Page 9: КР по СиС изображения в матлаб

Проект1:“ Премахване на размиване(замазване от движение) с алгоритм на Луси-Ричърдсън“ Алгоритмът на Луси-Ричардсън може да бъде ефективно използван когато се знае функцията на размиващият оператор но няма информация за шума. Стъпка 1-разчитане на изображението: Примерът прочита RGB изображение и го орязва така че да бъде 256 на 256 на 3. Функцията deconvlucy може да се справи с масиви от всяко измерение.

I = imread('board.tif');

I = I(50+[1:256],2+[1:256],:);

figure;imshow(I);title('Original Image');

text(size(I,2),size(I,1)+15, ...

'Image courtesy of courtesy of Alexander V. Panasyuk, Ph.D.', ...

'FontSize',7,'HorizontalAlignment','right');

text(size(I,2),size(I,1)+25, ...

'Harvard-Smithsonian Center for Astrophysics', ...

'FontSize',7,'HorizontalAlignment','right');

Оригинално изображение:

Стъпка 2: да се симулира Размиване и зашумяване Примерът симулира размиване чрез филтриране на true color изображение през Гаусов филтър.Гаусовия филтър представлява вид линеен филтър.

PSF = fspecial('gaussian',5,5);

Blurred = imfilter(I,PSF,'symmetric','conv');

figure;imshow(Blurred);title('Blurred');

размито изображение размито и зашумено изображение

Page 10: КР по СиС изображения в матлаб

Примерът симулиращ шум чрез добавяне на Гаусов шум ит варияция V на вече размитото изображение(използвайки команда imnoise) :

V = .002;

BlurredNoisy = imnoise(Blurred,'gaussian',0,V);

figure;imshow(BlurredNoisy);title('Blurred & Noisy');

Стъпка 3: Възстановяване на размито и зашумено изображение:

luc1 = deconvlucy(BlurredNoisy,PSF,5);

figure;imshow(luc1);title('Restored Image, NUMIT = 5');

Изходното изображение е с масив от същия вид като на входящото:

Проект2: Визуализация на изображение чрез прозрачност.:

Page 11: КР по СиС изображения в матлаб

Прозрачните графични обекти могат да бъдат ефектно използвани при обработката на изображения.Две особенно полезни техники са:

Отбелязване на частите в изображението където има прозрачни петна.

Показване на едно изображение прозиращо над друго

Тук ще покажем как могат да се отбележат местата с прозиращи петна в дадено изображение и ще използваме измерване на „екстремум“ Първо зареждаме изображението:

I = imread('rice.png');

imshow(I)

След това изсветляваме изображението с tophat оператор и след това изчистваме изображението

I2 = imtophat(I, ones(15, 15));

bw = im2bw(I2, graythresh(I2));

bw2 = bwareaopen(bw, 5);

bw3 = imclearborder(bw2);

imshow(bw3)

Отбелязваме двоичните обекти и изчисляваме екстремума

L = bwlabel(bw3);

s = regionprops(L, 'Extrema');

Page 12: КР по СиС изображения в матлаб

всеки обект има 8 екстремумни точки с които е асоцииран.

s(1).Extrema

ans =

11.5000 86.5000

12.5000 86.5000

34.5000 100.5000

34.5000 102.5000

33.5000 103.5000

27.5000 103.5000

9.5000 89.5000

9.5000 87.5000

Можем да наслагаме оградените от екстремум форми над оригиналното изображение на ориза чрез използване на „маркиращи“ обекти

imshow(I)

hold on

for k = 1:numel(s)

x = s(k).Extrema(:,1);

y = s(k).Extrema(:,2);

patch(x, y, 'g')

end

hold off

От горната визуализация става доста ясно,ако се фокусирате върху някоя от странните по-големи форми не бихте могли да кажете какво се случва.

axis([120 200 1 75])

Page 13: КР по СиС изображения в матлаб

Ще разрешим този проблем като изобразим маркерите така че да прозират

imshow(I)

hold on

for k = 1:numel(s)

x = s(k).Extrema(:,1);

y = s(k).Extrema(:,2);

patch(x, y, 'g', 'FaceAlpha', 0.3)

end

hold off

Сега вече ако приближим същото място можем да видим точно какво причинява това необичайно явление.

axis([120 200 1 75])

Page 14: КР по СиС изображения в матлаб

Две от зрънцата ориз се докосват... Проект3: Обработка на изображения и изброяване: Тук ще покажем как може да се изброи номерът на различните обекти в дадено изображение Стъпка1:разчитане на изображението: Избраното изображение трябва да има добър контраст с фонът си,така че обектите да могат да бъдат идентифицирани.Функцията” imread “прочита изображението от зададеното местоположение и го съхранява в матрица “img1”. Функцията изобразява „imshow“ самото изображение mg1=imread('Lines.jpg'); imshow(img1)

Стъпка 2: преобразуване на изображението в greyscale: Тази стъпка премахва всякаква цветова информация в изображението и го прави по-лесно за маниполации(идентификация на обектите в него). Функцията rgb2gray превръща цветното изображение в такова от сивата скала и го съхранява в матрица“img2“ img1=rgb2gray(img1); imshow(img1)

Page 15: КР по СиС изображения в матлаб

Стъпка 3: Праг на изображението Тази стъпка превъща grayscale изображението в бинарно такова.Функцията im2bw() задава черен цвят на всички пиксели които имат оцветеност пот даден праг а останалите задава като бели. Функцията graythresh() приблизително изчислява прага на изображението. img2=im2bw(img1,graythresh(img1)); imshow(img2)

Стъпка 4: Допълваща картина: В тази стъпка допълваме изображението използвайки оператора “~”.По този начин ние превръщаме белите пиксели в черни и обратното.Правим това защото искаме обектите да бъдат обградени в бяло. img2=~img2; imshow(img2)

Page 16: КР по СиС изображения в матлаб

Стъпка 5:Намиране на границите на обектите: Тази стъпка намира границите на всеки обект който открие и съхрани в B.Функцията посочва номера на обектите които са намерени от bwboundaries.

B = bwboundaries(img2); imshow(img2) text(10,10,strcat('\color{green}Objects Found:',num2str(length(B)))) hold on

Стъпка 6:Начертаване на границите: Това е стъпка в която ще маркираме границите на всички обекти разпознати чрез функцията „bwboundaries function“ Тази стъпка не е задължителна но служи за нагледност на резултата. for k = 1:length(B) boundary = B{k}; plot(boundary(:,2), boundary(:,1), 'g', 'LineWidth', 0.2) end

Page 17: КР по СиС изображения в матлаб