Infračervený filtr z kamery pro Raspberry Pi máme vyjmutý, několik mikročoček obrazového senzoru je lehce poškrábaných, a teorii k odstranění Bayerovy masky vysvětlenou. Pojďme ji tedy odstranit prakticky.
Jak jsem již zmínil, při vyjímání IR filtru z kamery k Raspberry Pi došlo k politováníhodné situaci, kdy několik prachových zrn z rozbitého skla filtru ulpělo na obrazovém senzoru. Zdlouhavé čištění sice dokázalo nečistoty takřka beze zbytku odstranit, ale došlo k lehkému škrábnutí horní vrstvy senzoru, která obsahuje vrstvu mikročoček směrujících viditelné spektrum elektromagnetického záření skrze Bayerovu masku k fotosenzorům jednotlivých fyzických pixelů.
Oproti velikosti obrazových senzorů v kompaktních fotoaparátech i digitálních zrcadlovkách, je ten v kameře pro Raspberry Pi velmi malý. Jeho rozměry jsou 3,67 mm x 2,73 mm. Z toho pramení i nutná obezřetnost při práci a takřka nutnost být vybaven mikroskopem/lupou, pevnými nervy a citlivýma rukama.
Jak se rozebírá kamera k Raspberry Pi už máme za sebou.
Nyní přikročíme k odstranění poměrně tvrdých vrstev mikročoček a Bayerovy masky nanesených na velmi velmi tvrdé křemíkové vrstvě, kterou se nám jen tak poškodit nepodaří. Poškodit ale můžeme jemné drátky propojující elektroniku obrazového senzoru s piny kamery. Pokud je poškodíme, není prakticky možnost, jak vzniklou škodu jednoduše napravit.
Následující návod bude spíše obrazový s vyznačením času. Uplynulý čas je v minutách bez započteného občerstvení a venčení psa. Celkem nám to může trvat hodinu a půl. Já to dělal bez jakýchkoli znalostí (a i když jsem byl smířen s případným nezdarem, dával jsem si pozor, abych se neunáhlil), takže s tímto návodem by to mělo jít rychleji. Pokud chcete vidět obrázky ve větším rozlišení, otevřete si je v jiném okně. Pro přehlednost se zobrazují menší.
Čas T NULA (0) – čistý originální senzor bez známek vady
Povšimněme si tenkých drátků na spodním okraji křemíku – těch se nesmíme za žádných okolností dotknout. Na obrázku vypadají robustně, ale ve zkutečnosti je na ně bojíme jenom pohlédnout.
Poslední barevná fotografie pořízená kamerou – už dlouho bez IR filtru.
Čas T + 2 – nádech a rýpeme
Vezmeme jehlu a to senzoru začneme „kreslit.“ Aktivní plochu obrazového senzoru poznáme podle odrazů světla – duhové zabarvení s tenkou linkou okolo. Já použil ocelovou rýsovací jehlu, ale jehla na šití či injekční jehla poslouží také. Není potřeba se bát poškození senzoru, pouze drátků na spodku. Samozřejmě neryjeme velkou silou. Jde nám o to, abychom povrch senzoru narušili a mohli pokračovat s měkčím nástrojem se kterým tolik nehrozí poškození obrazového senzoru.
Čas T + 5 – vrstva mikročoček a Bayerovy masky je narušena
Na obrázku je vidět narušení horních vrstev nad křemíkem. V tuto chvíli jsem vzal do ruky dřevěné jídelní párátko a po senzoru začal „šmrdlat“/přejíždět. Není potřeba se bát, můžeme zatlačit.
Čas T + 7 – dřevěným nástrojem odstraňujeme vrstvy
Čas T + 11 – první kontrolní snímek pořízení senzorem
Vidíme místa s odstraněnými vrstvami. K pořízení takového kontrolního snímku musíme přiložit objektiv. V mém případě používám klasický s M12 závitem a proto přišroubování není tak náročné.
Čas T + 15 – stále zbývá mnoho práce
Čas T + 28
Barevné mapy mohou děsit, ale vše je v pořádku a stále pokračujeme s dřevěným nástrojem, který nožem přiřezáváme a ostříme.
Čas T + 30 – druhý kontrolní snímek
Občas vytvoříme kontrolní snímek který nám ukáže co již obrazový senzor vidí/nevidí a ověříme funkčnost elektroniky – jestli jsme neporušili drátové spoje.
Čas T + 42
Čas T + 46
Čas T + 59
Po hodině titěrné práce to vypadá, že máme skoro hotovo, ale opak je pravdou. Čeká nás práce s lupou a odstraňování mikročástic Bayerovy masky, která nám na povrchu zůstala. V rozích senzoru nám ale materiálu na odstranění zůstalo ještě poměrně hodně.
Pokud jsme ještě neměli přestávku, je ten správný čas.
Čas T + 69
Čas T + 75
Na pomoc přichází vatový tampón.
Čas T + 82
Senzor se špičkou dřevěného párátka. Stále odstraňuji nečistoty na povrchu a proces kontroluji lupou.
Čas T + 88
Opravdu jemné nečistoty nelze odstranit jinak než tenkým měděným drátkem – průměr 0,1 mm.
Čas T + 93 – hlásím konec operace
Senzor je takřka čistý, ale nevlastním absolutně bezprašně prostředí. Po předchozích minutách trápení vím, že lepší už to nebude.
Výsledek
Pokud se podíváme na výsledek, je opravdu dobrý. Snímky jsou pořízeny na Raspberry Pi ve formátu JPEG. Pro práci s RAW (JPEG s vloženým RAW) se mi na Raspberry Pi osvědčil program dcraw
, který umí RAW z JPEG extrahovat a zpracovat jako monochromatický, a následně uložit do bezztrátového TIFF (parametry -D -6 -T
) s jedním kanálem, viz Odstranění Bayerovy mřížky ze senzoru kamery nebo fotoaparátu.
Soudkovitá chyba je záležitostí nevhodného objektivu.
Flat Field Frame – algoritmus optického senzoru a firmware Raspberry Pi si nedokážou poradit s celou plochou bílé barvy, proto je v JPEG zelená plocha.
„Monochromatické“ fotografie JPEG obsahují tři barevné kanály – R-G-B a senzor s firmware nedokážou vyvážit bílou barvu – to je očekávaný stav.
Pro další zpracování je nejjednodušší použít přímo na Raspberry Pi program dcraw
s parametry -D -6 -T
a výsledný obrázek v TIFF upravit např. v GIMPu, Adobe Photoshop, atd.
Programové zpracování
Pokud fotografujeme kamerou na Raspberry Pi, musíme provést několik kroků. Tím prvním je vlastní pořízení fotografie, následuje izolace RAW dat, konverze do monochromatického TIFF, přenos do počítače a finální úprava ve vhodném grafickém editoru.
Fotografování z CLI
Fotografovat z operačního systému Raspbian přímo na Raspberry Pi můžeme nejjednodušeji nástrojem raspistill
. V každém případě musíme nechat do výsledného datového souboru nechat také RAW data.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
root@linux:~# raspistill --raw -v -o image.jpg raspistill Camera App v1.3.11 Width 2592, Height 1944, quality 85, filename image.jpg Time delay 5000, Raw yes Thumbnail enabled Yes, width 64, height 48, quality 35 Link to latest frame enabled no Full resolution preview No Capture method : Single capture Preview Yes, Full screen Yes Preview window 0,0,1024,768 Opacity 255 Sharpness 0, Contrast 0, Brightness 50 Saturation 0, ISO 0, Video Stabilisation No, Exposure compensation 0 Exposure Mode 'auto', AWB Mode 'auto', Image Effect 'none' Flicker Avoid Mode 'off' Metering Mode 'average', Colour Effect Enabled No with U = 128, V = 128 Rotation 0, hflip No, vflip No ROI x 0.000000, y 0.000000, w 1.000000 h 1.000000 Camera component done Encoder component done Starting component connection stage Connecting camera preview port to video render. Connecting camera stills port to encoder input port Opening output file image.jpg Enabling encoder output port Starting capture -1 Finished capture -1 Closing down Close down completed, all components disconnected, disabled and destroyed |
Nebo nám podobnou práci odvede jednoduchý program napsaný v jazyku Python:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
#!/usr/bin/env python from picamera import PiCamera, Color import time camera = PiCamera() camera.start_preview() #sleep(5) camera.resolution = (2592, 1944) camera.framerate = 15 #camera.resolution = (1920, 1080) #camera.framerate = 30 #camera.resolution = (1296, 730) #camera.framerate = 49 #camera.resolution = (640, 480) #camera.framerate = 90 #camera.rotation = 90 camera.hflip = False camera.vflip = False #camera.annotate_text = "Hello world!" #camera.annotate_text_size = 50 #camera.annotate_background = Color('blue') #camera.annotate_foreground = Color('yellow') #camera.brightness = 70 #camera.contrast = 70 camera.image_effect = 'none' camera.color_effects = None #camera.color_effects = (128, 128) #camera.image_denoise = 'off' camera.awb_mode = 'auto' #camera.awb_mode = 'off' # Does not work without Bayer mask camera.exposure_mode = 'auto' camera.exposure_compensation = 0 camera.drc_strength = 'off' camera.flash_mode = 'off' camera.iso = 0 #camera.shutter_speed = 1000000 camera.exif_tags['IFD0.Copyright'] = 'Copyright (c) 2018 OK3ZB' camera.exif_tags['EXIF.UserComment'] = 'Camera No-IR/No-BayerMask test with M12 mount' camera.capture('image.jpg', use_video_port=False, bayer=True) camera.stop_preview() |
Výsledný datový soubor můžeme ověřit nástrojem z balíčku ImageMagick:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
root@dlinux:~# identify -verbose image.jpg Image: image.jpg Format: JPEG (Joint Photographic Experts Group JFIF format) Mime type: image/jpeg Class: DirectClass Geometry: 2592x1944+0+0 Resolution: 72x72 Print size: 36x27 Units: PixelsPerInch Type: TrueColor Endianess: Undefined Colorspace: sRGB Depth: 8-bit Channel depth: red: 8-bit green: 8-bit blue: 8-bit Channel statistics: Pixels: 5038848 Red: min: 45 (0.176471) max: 255 (1) mean: 180.653 (0.708443) standard deviation: 43.8341 (0.171898) kurtosis: -0.182007 skewness: -0.84205 entropy: 0.920643 Green: min: 29 (0.113725) max: 246 (0.964706) mean: 156.06 (0.612001) standard deviation: 42.3297 (0.165999) kurtosis: -0.338969 skewness: -0.498834 entropy: 0.936667 Blue: min: 43 (0.168627) max: 255 (1) mean: 179.761 (0.704945) standard deviation: 43.7908 (0.171729) kurtosis: -0.197782 skewness: -0.834179 entropy: 0.920753 Image statistics: Overall: min: 29 (0.113725) max: 255 (1) mean: 172.158 (0.675129) standard deviation: 43.3238 (0.169897) kurtosis: -0.0189363 skewness: -0.720438 entropy: 0.926021 Rendering intent: Perceptual Gamma: 0.454545 Chromaticity: red primary: (0.64,0.33) green primary: (0.3,0.6) blue primary: (0.15,0.06) white point: (0.3127,0.329) Background color: white Border color: srgb(223,223,223) Matte color: grey74 Transparent color: black Interlace: None Intensity: Undefined Compose: Over Page geometry: 2592x1944+0+0 Dispose: Undefined Iterations: 0 Compression: JPEG Quality: 100 Orientation: Undefined Properties: date:create: 2018-11-30T16:12:06+01:00 date:modify: 2018-11-30T16:12:06+01:00 exif:ApertureValue: 30705/10000 exif:BrightnessValue: 777/100 exif:ColorSpace: 1 exif:ComponentsConfiguration: 1, 2, 3, 0 exif:Copyright: Copyright (c) 2018 Zdenek Brichacek exif:DateTime: 2018:11:30 16:12:05 exif:DateTimeDigitized: 2018:11:30 16:12:05 exif:DateTimeOriginal: 2018:11:30 16:12:05 exif:ExifImageLength: 1944 exif:ExifImageWidth: 2592 exif:ExifOffset: 240 exif:ExifVersion: 48, 50, 50, 48 exif:ExposureMode: 0 exif:ExposureProgram: 3 exif:ExposureTime: 2454/1000000 exif:Flash: 0 exif:FlashPixVersion: 48, 49, 48, 48 exif:FNumber: 28984/10000 exif:FocalLength: 35976/10000 exif:ImageLength: 1944 exif:ImageWidth: 2592 exif:InteroperabilityOffset: 996 exif:ISOSpeedRatings: 100 exif:Make: RaspberryPi exif:MakerNote: 101, 118, 61, 45, 49, 32, 109, 108, 117, 120, 61, 45, 49, 32, 101, 120, 112, 61, 50, 52, 53, 52, 32, 97, 103, 61, 50, 53, 54, 32, 102, 111, 99, 117, 115, 61, 50, 53, 53, 32, 103, 97, 105, 110, 95, 114, 61, 49, 46, 49, 54, 48, 32, 103, 97, 105, 110, 95, 98, 61, 49, 46, 49, 53, 50, 32, 103, 114, 101, 101, 110, 110, 101, 115, 115, 61, 45, 53, 57, 32, 99, 99, 109, 61, 56, 52, 54, 52, 44, 45, 51, 54, 55, 52, 44, 45, 54, 56, 56, 44, 45, 49, 52, 54, 52, 44, 54, 48, 56, 56, 44, 45, 53, 50, 52, 44, 52, 52, 48, 44, 45, 51, 55, 56, 48, 44, 55, 52, 52, 54, 44, 48, 44, 48, 44, 48, 32, 109, 100, 61, 48, 32, 116, 103, 61, 57, 55, 32, 57, 55, 32, 111, 116, 104, 61, 48, 32, 48, 32, 98, 61, 48, 32, 102, 61, 57, 55, 32, 57, 55, 32, 102, 105, 61, 48, 32, 73, 83, 80, 32, 66, 117, 105, 108, 100, 32, 68, 97, 116, 101, 58, 32, 78, 111, 118, 32, 32, 52, 32, 50, 48, 49, 56, 44, 32, 49, 54, 58, 51, 52, 58, 49, 57, 32, 86, 67, 95, 66, 85, 73, 76, 68, 95, 73, 68, 95, 86, 69, 82, 83, 73, 79, 78, 58, 32, 101, 100, 53, 98, 97, 102, 57, 53, 50, 48, 97, 51, 99, 52, 99, 97, 56, 50, 98, 97, 51, 56, 53, 57, 52, 98, 56, 57, 56, 102, 48, 99, 48, 52, 52, 54, 100, 97, 54, 54, 32, 40, 99, 108, 101, 97, 110, 41, 32, 86, 67, 95, 66, 85, 73, 76, 68, 95, 73, 68, 95, 85, 83, 69, 82, 58, 32, 100, 99, 52, 32, 86, 67, 95, 66, 85, 73, 76, 68, 95, 73, 68, 95, 66, 82, 65, 78, 67, 72, 58, 32, 109, 97, 115, 116, 101, 114, 32 exif:MaxApertureValue: 30705/10000 exif:MeteringMode: 2 exif:Model: RP_ov5647 exif:ResolutionUnit: 2 exif:ShutterSpeedValue: 8670650/1000000 exif:thumbnail:Compression: 6 exif:thumbnail:ImageLength: 48 exif:thumbnail:ImageWidth: 64 exif:thumbnail:InteroperabilityIndex: R98 exif:thumbnail:JPEGInterchangeFormat: 1132 exif:thumbnail:JPEGInterchangeFormatLength: 24576 exif:thumbnail:ResolutionUnit: 2 exif:thumbnail:XResolution: 72/1 exif:thumbnail:YResolution: 72/1 exif:UserComment: 67, 97, 109, 101, 114, 97, 32, 78, 111, 73, 82, 32, 116, 101, 115, 116, 32, 119, 105, 116, 104, 32, 77, 49, 50, 32, 109, 111, 117, 110, 116 exif:WhiteBalance: 0 exif:XResolution: 72/1 exif:YCbCrPositioning: 1 exif:YResolution: 72/1 jpeg:colorspace: 2 jpeg:sampling-factor: 2x2,1x1,1x1 signature: 4fda2480948d5a90dc5d1cd3c26602d58621fdba17e0545f4f1a75ab3766f8c3 Profiles: Profile-exif: 25714 bytes Artifacts: filename: image.jpg verbose: true Tainted: False Filesize: 8.667MB Number pixels: 5.039M Pixels per second: 2.571MB User time: 1.910u Elapsed time: 0:02.959 Version: ImageMagick 6.9.7-4 Q16 arm 20170114 http://www.imagemagick.org |
Dcraw
Program dcraw provede izolaci RAW z JPEG a konverzi do monochromatického TIFF.
1 2 3 4 |
root@linux:~# dcraw -T -D -6 -c -v image.jpg > image.tiff Loading OmniVision RP_ov5647 image from image.jpg ... Building histograms... Writing data to standard output ... |
Ověření formátu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
root@linux:~# identify -verbose image.tiff Image: image.tiff Format: TIFF (Tagged Image File Format) Mime type: image/tiff Class: DirectClass Geometry: 2592x1944+0+0 Resolution: 300x300 Print size: 8.64x6.48 Units: PixelsPerInch Type: Grayscale Base type: Grayscale Endianess: LSB Colorspace: Gray Depth: 16-bit Channel depth: gray: 16-bit Channel statistics: Pixels: 5038848 Gray: min: 0 (0) max: 31827 (0.485649) mean: 13913.5 (0.212306) standard deviation: 1798.08 (0.027437) kurtosis: 6.69876 skewness: -0.730343 entropy: 0.576048 Colors: 59 Histogram: 6000: ( 0, 0, 0) #000000000000 gray(0) 871: ( 1152, 1152, 1152) #048004800480 gray(2%) 1065: ( 2304, 2304, 2304) #090009000900 gray(4%) 1458: ( 3456, 3456, 3456) #0D800D800D80 gray(5%) 1922: ( 4608, 4608, 4608) #120012001200 gray(7%) 2659: ( 5750, 5750, 5750) #167616761676 gray(9%) 3828: ( 6798, 6798, 6798) #1A8E1A8E1A8E gray(10%) 6297: ( 7754, 7754, 7754) #1E4A1E4A1E4A gray(12%) 15014: ( 8637, 8637, 8637) #21BD21BD21BD gray(13%) 35360: ( 9462, 9462, 9462) #24F624F624F6 gray(14%) 78397: (10237,10237,10237) #27FD27FD27FD gray(16%) 157920: (10971,10971,10971) #2ADB2ADB2ADB gray(17%) 275899: (11669,11669,11669) #2D952D952D95 gray(18%) 415519: (12335,12335,12335) #302F302F302F gray(19%) 595895: (12974,12974,12974) #32AE32AE32AE gray(20%) 773997: (13589,13589,13589) #351535153515 gray(21%) 893384: (14181,14181,14181) #376537653765 gray(22%) 796012: (14753,14753,14753) #39A139A139A1 gray(23%) 427: (15307,15307,15307) #3BCB3BCB3BCB gray(23%) 497592: (15844,15844,15844) #3DE43DE43DE4 gray(24%) 267424: (16366,16366,16366) #3FEE3FEE3FEE gray(25%) 114647: (16874,16874,16874) #41EA41EA41EA gray(26%) 40569: (17369,17369,17369) #43D943D943D9 gray(27%) 18019: (17851,17851,17851) #45BB45BB45BB gray(27%) 10150: (18322,18322,18322) #479247924792 gray(28%) 7468: (18783,18783,18783) #495F495F495F gray(29%) 4889: (19233,19233,19233) #4B214B214B21 gray(29%) 3370: (19674,19674,19674) #4CDA4CDA4CDA gray(30%) 2456: (20106,20106,20106) #4E8A4E8A4E8A gray(31%) 1841: (20529,20529,20529) #503150315031 gray(31%) 1401: (20945,20945,20945) #51D151D151D1 gray(32%) 1090: (21353,21353,21353) #536953695369 gray(33%) 956: (21754,21754,21754) #54FA54FA54FA gray(33%) 846: (22148,22148,22148) #568456845684 gray(34%) 785: (22536,22536,22536) #580858085808 gray(34%) 648: (22917,22917,22917) #598559855985 gray(35%) 572: (23292,23292,23292) #5AFC5AFC5AFC gray(36%) 542: (24026,24026,24026) #5DDA5DDA5DDA gray(37%) 515: (24385,24385,24385) #5F415F415F41 gray(37%) 272: (24739,24739,24739) #60A360A360A3 gray(38%) 245: (25089,25089,25089) #620162016201 gray(38%) 257: (25433,25433,25433) #635963596359 gray(39%) 184: (25773,25773,25773) #64AD64AD64AD gray(39%) 39: (26109,26109,26109) #65FD65FD65FD gray(40%) 28: (26440,26440,26440) #674867486748 gray(40%) 37: (26768,26768,26768) #689068906890 gray(41%) 38: (27091,27091,27091) #69D369D369D3 gray(41%) 12: (27411,27411,27411) #6B136B136B13 gray(42%) 4: (27727,27727,27727) #6C4F6C4F6C4F gray(42%) 8: (28040,28040,28040) #6D886D886D88 gray(43%) 9: (28349,28349,28349) #6EBD6EBD6EBD gray(43%) 1: (28655,28655,28655) #6FEF6FEF6FEF gray(44%) 2: (28958,28958,28958) #711E711E711E gray(44%) 1: (29257,29257,29257) #724972497249 gray(45%) 1: (29848,29848,29848) #749874987498 gray(46%) 3: (30138,30138,30138) #75BA75BA75BA gray(46%) 1: (30426,30426,30426) #76DA76DA76DA gray(46%) 1: (30711,30711,30711) #77F777F777F7 gray(47%) 1: (31827,31827,31827) #7C537C537C53 gray(49%) Rendering intent: Undefined Gamma: 0.454545 Background color: gray(255) Border color: gray(223) Matte color: gray(189) Transparent color: gray(0) Interlace: None Intensity: Undefined Compose: Over Page geometry: 2592x1944+0+0 Dispose: Undefined Iterations: 0 Compression: None Orientation: TopLeft Properties: comment: date:create: 2018-12-01T21:48:22+01:00 date:modify: 2018-12-01T21:48:22+01:00 exif:ExposureTime: 0.12499 exif:FNumber: 2.89839 exif:FocalLength: 3.5976 exif:ISOSpeedRatings: 640 signature: d4a66c4c9fa3723cf94b71ef0378481ff043f71b8a68d2a73ff43a9e094bcb4a tiff:alpha: unspecified tiff:artist: tiff:endian: lsb tiff:make: OmniVision tiff:model: RP_ov5647 tiff:photometric: min-is-black tiff:rows-per-strip: 1 tiff:software: dcraw v9.27 tiff:timestamp: 2018:12:01 21:23:50 Artifacts: filename: image.tiff verbose: true Tainted: False Filesize: 10.08MB Number pixels: 5.039M Pixels per second: 9.69MB User time: 0.270u Elapsed time: 0:01.520 Version: ImageMagick 6.9.7-4 Q16 arm 20170114 http://www.imagemagick.org |
Můžeme také použít aplikaci darktable:
Závěr
A obdobně to jde s obrazovými senzory ve fotoaparátech, které Bayerovu masku používají.
Pingback: Odstranění Bayerovy mřížky ze senzoru kamery nebo fotoaparátu | brichacek.net