{"id":54788,"date":"2020-01-04T00:00:00","date_gmt":"2020-01-03T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/jpeg-algoritm-szhatiya"},"modified":"2020-02-18T14:02:50","modified_gmt":"2020-02-18T11:02:50","slug":"jpeg-algoritm-szhatiya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/jpeg-algoritm-szhatiya","title":{"rendered":"JPEG. Compressie-algoritme","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo opnieuw! Ik vond dit artikel, geschreven in mei 2019. Dit is een vervolg op de serie artikelen over WAVE en JPEG. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/450774\/\">eerste<\/a><\/noindex>Deze publicatie zal informatie bevatten over het afbeeldingscoderingsalgoritme en het formaat zelf.<\/p>\n<p><\/p>\n<h3 id=\"schepotku-istorii\">Een snufje geschiedenis<\/h3>\n<p><\/p>\n<p>Een lepel artikel uit Wikipedia:<\/p>\n<p><\/p>\n<blockquote><p>JPEG (Joint Photographic Experts Group) is een van de populaire rasterafbeeldingsformaten dat wordt gebruikt voor het opslaan van foto's en soortgelijke afbeeldingen.<\/p><\/blockquote>\n<p>Deze standaard werd ontwikkeld door een samenwerkingsgroep van fotografie-experts in 1991 voor effici\u00ebnte beeldcompressie.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"kakoy-put-prohodyat-izobrazheniya-ot-syrogo-vida-do-jpeg\">Welke weg afgebeeldingen afleggen van rauwe staat naar JPEG<\/h3>\n<p><\/p>\n<p>Sommigen geloven dat JPEG-afbeeldingen gecomprimeerde ruwe gegevens zijn met behulp van Huffman-compressie, maar dat is niet waar. Voordat de controlecompressie plaatsvindt, doorlopen de gegevens een lange weg.<\/p>\n<p><\/p>\n<p>Eerst verandert men het kleurenmodel van RGB naar YCbCr. Er is zelfs een speciaal algoritme voor: <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/YCbCr#%D0%9F%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE_%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D0%B0%D1%86%D0%B8%D0%B8_ITU-R_BT.601\">hier<\/a><\/noindex>Y blijft ongemoeid, omdat dit verantwoordelijk is voor de helderheid, en een wijziging ervan zal merkbaar zijn.<\/p>\n<p><\/p>\n<p>Het eerste wat met een afbeelding gebeurt, is <strong>\u00abdoorhalingen\u00bb<\/strong> (subsampling). Dit is eenvoudig te begrijpen: een 2x2 matrix van pixels wordt genomen, vervolgens worden de Cb en Cr \u2014 de gemiddelde waarden van elk van de YCbCr-componenten van deze 4 pixels. En zo, <em>hebben we 6 byte gewonnen<\/em>, in plaats van 4 Y, 4 Cb, 4 Cr kregen we 4 Y en dezelfde voor elk van hen Cb en Cr (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 \u2014 6 = 6). Zelfs bij een compressie van 2:1 klinkt het voor een 2&#215;2 formaat solide. Dit wordt toegepast op de hele afbeelding. En zo hebben we de helft van de grootte weggegooid. Deze techniek kunnen we dankzij onze kleurperceptie gebruiken. Een mens merkt gemakkelijk het verschil in helderheid op, maar niet in kleur, als deze gemiddeld is in een klein blok pixels. Ook kan doorhalingen in lijn worden uitgevoerd, 4 pixels horizontaal en verticaal. De eerste optie wordt vaker gebruikt. Als de beeldkwaliteit belangrijk is, wordt er helemaal geen doorhalingen uitgevoerd.<br \/>\nEen duidelijke illustratie van onderverdeling (Habr liet niet toe om een gif in te voegen) \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/i.ibb.co\/Rg5Th9H\/150953010617579181.gif\">https:\/\/i.ibb.co\/Rg5Th9H\/150953010617579181.gif<\/a><\/noindex><\/p>\n<p><\/p>\n<h5 id=\"osnovnaya-chast-podgotovki\">Het belangrijkste deel van de voorbereiding<\/h5>\n<p>\nDCT<\/p>\n<p>Nu het moeilijkste en noodzakelijke deel. De hele afbeelding wordt opgedeeld in blokken van 8&#215;8 (er wordt padding gebruikt als de resolutie niet een veelvoud is van de blokzijde).<\/p>\n<p><\/p>\n<p>Nu wordt er een <strong>DCT (Discrete Cosine Transform) op elk blok toegepast.<\/strong>. In dit deel wordt alles overbodige uit de afbeelding gehaald. Bij het gebruik van DCT moet men begrijpen of dit blok (8&#215;8) een monotone afbeelding beschrijft: de lucht, muren; of het bevat een complexe structuur (haar, symbolen, enz.). Het is logisch dat 64 pixels die qua kleur op elkaar lijken, met 1 kunnen worden beschreven, aangezien de grootte van het blok al bekend is. Hier heb je compressie: 64 naar 1.<\/p>\n<p><\/p>\n<p>DCT transformeert het blok naar een spectrum, en daar waar de waarden abrupt veranderen, wordt de co\u00ebffici\u00ebnt positief, en hoe steiler de overgang, des te hoger de output zal zijn. Daar waar de co\u00ebffici\u00ebnt hoger is, worden in de afbeelding scherpe kleur- en helderheidsovergangen afgebeeld, terwijl daar waar deze lager is, de veranderingen van de componenten YCbCr in het blok zwakker (vloeiender) zijn.<\/p>\n<p>\nQuantisatie<\/p>\n<p>Hier worden compressie-instellingen toegepast. Elke co\u00ebffici\u00ebnt in elke 8&#215;8 matrix wordt gedeeld door een bepaald getal. Als u de kwaliteit van de afbeelding na alle wijzigingen niet verder wilt verlagen, moet de deler 1 zijn. Als u belangrijker vindt hoeveel geheugen deze foto gebruikt, moet de deler groter zijn dan 1, en het quoti\u00ebnt wordt afgerond. Dit betekent dat er na afronding vaak veel nullen ontstaan.<\/p>\n<p><\/p>\n<p>Quantisatie wordt gedaan om de mogelijkheid voor nog grotere compressie te cre\u00ebren. Zo ziet het eruit in het voorbeeld van de quantisatie van de grafiek y = sin(x):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"JPEG. Compressie-algoritme\" src=\"\/wp-content\/uploads\/2020\/01\/ab6c205c62133785b19b5f42db109fa6.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>\nCompressie<\/p>\n<p>Eerst gaan we zigzaggend door de matrix:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"JPEG. Compressie-algoritme\" src=\"\/wp-content\/uploads\/2020\/01\/576a5e65431d38742efe42ead0e3863b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hierdoor krijgen we een eendimensionale array met getallen. We zien dat er veel nullen in staan, die kunnen we verwijderen. In plaats van een reeks van veel nullen schrijven we 1 nul en daarna een getal dat het aantal in de reeks aangeeft. Op deze manier kan de totale grootte van de array tot 1\/3 worden teruggebracht. En daarna wordt deze array gewoon gecomprimeerd met de Huffman-methode en wordt deze in het bestand geschreven.<\/p>\n<p><\/p>\n<h3 id=\"gde-ispolzuetsya\">Waar het wordt gebruikt<\/h3>\n<p><\/p>\n<p>Overal. Net als PNG wordt JPEG gebruikt in camera's, OS&#8217;en (voor bedrijfslogo's, applicatie-icoontjes, miniatuurafbeeldingen) en in alle mogelijke gebieden waar afbeeldingen effici\u00ebnt moeten worden opgeslagen.<\/p>\n<p><\/p>\n<h3 id=\"vyvod\">Uitslag<\/h3>\n<p><\/p>\n<p>Op dit moment zijn kennis over JPEG alleen nog waardevol voor educatieve doeleinden, aangezien het overal is ingebouwd en geoptimaliseerd door grote groepen mensen, maar de graniet van de wetenschap blijft toch verleidelijk.<\/p>\n<p>\nBronnen<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/YCbCr\">Artikel over YCbCr op Wikipedia<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/JPEG\">Artikel over JPEG op Wikipedia<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/pikabu.ru\/story\/kak_ustroen_format_jpeg_5452388\">Een beetje over DCT uit een post op Pikabu<\/a><\/noindex><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D1%81%D0%B8%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5\">Artikel over DCT op Wikipedia<\/a><\/noindex><\/p>\n<p>Bron: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/482728\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0418 \u0441\u043d\u043e\u0432\u0430 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435! \u042f \u043d\u0430\u0448\u0435\u043b \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0435\u0449\u0435 \u043c\u0430\u0435 2019-\u043e\u0433\u043e \u0433\u043e\u0434\u0430. \u042d\u0442\u043e \u2014 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e WAVE \u0438 JPEG, \u0412\u043e\u0442 \u043f\u0435\u0440\u0432\u0430\u044f. \u042d\u0442\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u043a\u043b\u044e\u0447\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u043e \u0441\u0430\u043c\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432 \u0446\u0435\u043b\u043e\u043c. \u0429\u0435\u043f\u043e\u0442\u043a\u0443 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0421\u0442\u043e\u043b\u043e\u0432\u0443\u044e \u043b\u043e\u0436\u043a\u0443 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u0437 \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0438: JPEG (Joint Photographic Experts Group) \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-54788","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0418 \u0441\u043d\u043e\u0432\u0430 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435! \u042f \u043d\u0430\u0448\u0435\u043b \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0435\u0449\u0435 \u043c\u0430\u0435 2019-\u043e\u0433\u043e \u0433\u043e\u0434\u0430. \u042d\u0442\u043e \u2014 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e WAVE \u0438 JPEG, \u0412\u043e\u0442 \u043f\u0435\u0440\u0432\u0430\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/jpeg-algoritm-szhatiya\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47JPEG. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0436\u0430\u0442\u0438\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0418 \u0441\u043d\u043e\u0432\u0430 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435! \u042f \u043d\u0430\u0448\u0435\u043b \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0435\u0449\u0435 \u043c\u0430\u0435 2019-\u043e\u0433\u043e \u0433\u043e\u0434\u0430. \u042d\u0442\u043e \u2014 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e WAVE \u0438 JPEG, \u0412\u043e\u0442 \u043f\u0435\u0440\u0432\u0430\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/jpeg-algoritm-szhatiya\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-03T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:50+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47JPEG. Comprimeeralgoritme | ProHoster","description":"En opnieuw hallo! Ik vond dit artikel, geschreven in mei 2019. Dit is een vervolg op de serie artikelen over WAVE en JPEG, hier is de eerste.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/jpeg-algoritm-szhatiya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47JPEG. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0441\u0436\u0430\u0442\u0438\u044f | ProHoster","og:description":"\u0418 \u0441\u043d\u043e\u0432\u0430 \u0437\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435! \u042f \u043d\u0430\u0448\u0435\u043b \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0443\u044e \u0435\u0449\u0435 \u043c\u0430\u0435 2019-\u043e\u0433\u043e \u0433\u043e\u0434\u0430. \u042d\u0442\u043e \u2014 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e WAVE \u0438 JPEG, \u0412\u043e\u0442 \u043f\u0435\u0440\u0432\u0430\u044f.","og:url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/jpeg-algoritm-szhatiya","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-03T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:50+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54788","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 12:45:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:01:54","updated":"2026-01-24 12:45:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/54788","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=54788"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/54788\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=54788"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=54788"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=54788"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}