ПредишенСледващото

6. Слайд произволни растерни изображения.

Произволно изображение на екрана на компютъра е масив от пиксели, всеки от които се характеризират с цвета си. цвят на пикселите се определя от три компонента: червено, зелено и синьо (червен, зелен, син - RGB). Да се ​​определят стойности на цвета пиксел компонент на само една памет байт (8 бита) може да бъде написано, където цели числа от нула до 255 (общо 256 стойности).

По този начин, всеки пиксел на екрана, трябва да съответстват на трите числа между 0 и 255. В такава система MATLAB числа съответства на типа на данните, по-нататък uint8. При този тип данни се дава само на един байт от паметта, вместо 8 байта за обикновените реални (дробни) номера от типа на двоен. По подразбиране, всяка променлива в системата MATLAB е свързано с тип двойно, независимо от числени стойности, които можете да зададете променливи.

Например, един код резултат на следващия ред

е създаден с името и типа на променлива iVar1 двойно, което се определя стойност на 128. За съхраняване на такива стойности доста един байт от паметта, обаче, за променлива iVar1 двойно тип целеви 8 байта памет. Очевидна е превишаването на разходите памет.

За да се избегнат такива преразходи променлива трябва да бъде изрично декларирани като цяло, като се използва модификатор uint8:

Това създава променлива iVar2 счита за целочислена променлива (не реални), а под него се дава един байт от паметта. Такива променливи в MATLAB система, специално предназначени за съхранение на цели стойности 0-255 (за да спестите памет) и не са предназначени за изчисления! Най-малко в редакцията на MATLAB 5.2 е по-така. Като резултат, следните фрагмент

Получавам съобщение за грешка:

. Функция "+", не са определени за променливи на класа "uint8".

Буквално означава, че операция "добавка" за променлива тип uint8 не е определена.

За да научите (ако забравя), какъв тип е с една или друга променлива на системата MATLAB работното пространство, влиза и изпълните командата

в резултат на което се появява следното съобщение в MATLABa командния прозорец:

Системата на графики в MATLAB

което показва, че iVar1 размер 1x1 масив (т.е., всъщност скаларна) тип и двойно заема 8 байта в паметта, и има iVar2 тип uint8 и отнема в памет само един байт (8 пъти по-малко). В този случай, и двете променливи имат същите стойности.

Някои набор от цветове (в брой парчета м), наречена палитра или цветова палитра, могат да бъдат разположени като матрица с размер m х 3 двойни тип. Например, map1 матрицата

map1 (1,1) = 0,12; map1 (1,2) = 0.123; map1 (1,3) = 0.987;

map1 (4,1) = 0,255; map1 (4,2) = 0,298; map1 (4,3) = 0,128;

Тя определя набор от пет цвята. Всеки ред съответства на един цвят. Договорени покупки (ляво - дясно), определени от червено, зелено и siniyu цветове компонент.

След това се образува матрицата на к х тип L uint8, всеки елемент от които е равна на едно от числата (минус едно) редове map1 цвят маса. Такава матрица заедно с цветен матрица ще бъде достатъчно, за да се появи на екрана на компютъра масив от пиксели, което е, произволно изображение.

Например, X1 матрицата

X1 = uint8 ([1 4 1 3 февруари 4 0 2 1 3])

дефинира набор от размер uint8 от 2 х 5 пиксел. Този масив е само на 10-байт памет, вместо от 80 байта, както би било в случай на двойно масив. Първият пиксел на първия ред има цвят, определен от втори ред map1 матрица, вторият пиксел в един и същи ред съответства на петия ред map1 матрицата, и така нататък.

За да накарате MATLAB система всъщност показва произволен модел на пиксела, трябва да се обадите на изображението функция.

Например, с функцията

създадено графично изображение MATLAB система, която да съответства на действителното изображение в MATLABa графичния прозорец:

Системата на графики в MATLAB

Тъй като ние не контролираме размера на MATLAB графичен прозорец, той се появява на екрана с някои разумни размери, по подразбиране. Освен това, тъй като нашия имидж се състои от два реда от пет всеки пиксел, което е много малко изображения (физически размер пиксел на екрана е приблизително равна на 0.2 mm), по подразбиране MATLAB него (увеличава) везни, за да може да видите тази снимка. Ако искате да се откажете от това мащаб, е необходимо да се посочи ясно желания размер:

фигура ( "единици", "пиксела", "състояние", [100 100 п т]);

Тук размерът на пит изображение X1 наложено като физически размер на изображението в графика прозорец на MATLAB за. За твърде малки снимки по едно и също време, нищо хубаво не се случва.

Ако ние не се създават нови образи ясно манипулират матрици, и ние ще се опитаме да покажем в графичния прозорец на MATLAB готови изображения, записани в досието, тогава ние трябва да се запознае със съдържанието на тези файлове функция imread. По-специално, преди да се записва триизмерни графични файлове, използвайки imwrite функция. Сега те могат да четат

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

Ние счита структурата на информационен обект файл на, състояща се от две матрици, една от които определя цвят ред по ред, и другите елементи на своите входни точки на маса (матрица) цветове, точно както нарича индексирани Image (индексира изображение). Има и друг тип обект на изображението - т.нар Truecolor изображение (снимки с много цветове - 16 милиона). Този втори вид изображение обекти са разположени по различен начин.

За TruecolorImage- обект цвета на масата не се изисква, тъй като масиви от данни на такива обекти директно определят цвета.

Тези масиви имат размер на m х п х 3 (3 измерение масиви). Стойностите пит определяне на размера на изображението на екрана (m х п пиксела), и са разположени по протежение на третата посока RGB цветови компоненти на всеки пиксел. Нека да даде пример за следващата масив за TrueColor снимки:

xTrue (1,1,1) = uint8 (127); xTrue (1,1,2) = uint8 (127); xTrue (1,1,3) = uint8 (127);

xTrue (1,2,1) = uint8 (19); xTrue (1,2,2) = uint8 (12); xTrue (1,2,3) = uint8 (255);

xTrue (1,3,1) = uint8 (245); xTrue (1,3,2) = uint8 (127); xTrue (1,3,3) = uint8 (1);

xTrue (2,1,1) = uint8 (6); xTrue (2,1,2) = uint8 (203); xTrue (2,1,3) = uint8 (128);

xTrue (2,2,1) = uint8 (100); xTrue (2,2,2) = uint8 (1); xTrue (2,2,3) = uint8 (80);

xTrue (2,3,1) = uint8 (60); xTrue (2,3,2) = uint8 (249); xTrue (2,3,3) = uint8 (5);

Array xTrue създава изображение 2 х 3 пиксела, като се обадите една функция на изображението (xTrue):

Системата на графики в MATLAB

В случай, че изображенията са TrueColor матрица Х получава размер м х н х 3 матрица от палитрата на картата е празна:

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

Въпреки това, ако ние знаехме предварително, че файлът съдържа изображение тип TrueColor проведохме кратък код, за да я прочетете

и ще покажат образа на поканата само една функция на изображението (X). За да знаем предварително вида на графичен файл, трябва да се обадите на функцията

По-специално за "myfile1.jpg" на файла, създаден в предишната част на това ръководство, imfinfo функция ще даде следната информация:

Системата на графики в MATLAB

Това показва, че типа на графичен файл (ColorType) имат truecolor. Това означава, че можете да направите напълно без цвят матрица.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!