Какво всъщност вижда компютърът
В урок 10 казахме, че всеки вид данни трябва да стане числа, преди алгоритъмът да го докосне. В уроци 19 и 20 мрежата „разпознаваше“ образи, но не спряхме да попитаме какво получава на входа. Отговорът е прост и малко разочароващ: таблица от числа. Нито котка, нито лице, нито буква — числа, подредени в редове и колони.
Днес отваряме тази таблица. Ще видим откъде идват числата, защо са точно между 0 и 255, какво прави цвета и колко байта тежи една снимка. Следващите два урока стъпват изцяло върху това.
Пикселът и сивото изображение
Пиксел (pixel)
Най-малката точка на цифровото изображение. При сиво изображение пикселът е едно число: колко светла е точката.
Числото е от 0 до 255. Защо точно 255? Защото за един пиксел се заделя един байт — 8 бита, а с 8 бита се записват 2⁸ = 256 различни стойности: от 0 до 255. Това е удобно за паметта и достатъчно за окото — човек различава далеч по-малко степени на сивото.
Матрица
Правоъгълна таблица от числа с определен брой редове и колони. Сиво изображение с 6 реда и 6 колони е матрица 6×6 с 36 числа.
Цветът: три матрици вместо една
Екранът смесва три светлини — червена, зелена и синя. Затова цветният пиксел не е едно число, а три: по едно за всеки цветен канал (channel). Записва се като тройка (R, G, B), всяко от 0 до 255.
| (R, G, B) | Цвят | Защо |
|---|---|---|
(0, 0, 0) | черно | нито една светлина не свети |
(255, 255, 255) | бяло | и трите на максимум |
(255, 0, 0) | червено | само червеният канал |
(255, 255, 0) | жълто | червено + зелено |
(128, 128, 128) | средно сиво | трите са равни |
(0, 0, 128) | тъмносиньо | малко синьо, нищо друго |
От цветно към сиво
Когато трите числа са равни, пикселът е сив. За да превърнем цветна снимка в сива, за всеки пиксел взимаме средното на трите канала: (R + G + B) / 3. Пиксел (200, 100, 60) става 120. Много модели работят именно със сиви изображения — три пъти по-малко числа, а формите се пазят.
Разделителна способност и размер
Разделителна способност (резолюция)
Броят пиксели по ширина и височина, например 1920×1080. Колкото е по-голяма, толкова повече подробности — и толкова повече числа.
Размерът в паметта се смята направо от матрицата:
сиво: ширина × височина × 1 байт
цветно: ширина × височина × 3 байта
8 × 8 сиво = 64 байта
28 × 28 сиво = 784 байта (ръкописните цифри от урок 19)
1920 × 1080 цветно = 6 220 800 байта ≈ 6 MB
4000 × 3000 цветно = 36 000 000 байта = 36 MB (снимка от телефон)Промяна на пиксели е аритметика
Щом изображението е матрица, „да редактираш снимка“ значи „да смениш числата“. Две от най-простите операции:
- Обръщане на цветовете (негатив): всяко число
vстава255 − v. Черното става бяло, тъмносивото — светлосиво. - Осветяване: към всяко число добавяме едно и също, например
+50. Ако резултатът мине 255, спираме на 255 — по-бяло от бяло няма.
ред от матрицата: 10 60 120 200 240
негатив (255 − v): 245 195 135 55 15
осветяване (+50): 60 110 170 250 255 ← 290 се отрязва до 255Какво трябва да запомниш
- Цифровото изображение е матрица от числа; един пиксел е едно число (сиво) или три (цветно).
- Стойностите са от 0 (черно) до 255 (бяло), защото на пиксел се пада един байт на канал.
- Цветът се получава от три канала — червен, зелен и син; равни стойности дават сиво.
- Размерът е ширина × височина × брой канали байта; файлът е по-малък заради компресия.
- Промяната на изображението е аритметика върху числата, с отрязване до 0 и 255.
- Точно тази матрица получава моделът за разпознаване — нищо друго.