رمزگذاری بدون ضرر و شفافیت در WebP

Jyrki Alakuijala، Ph.D., Google, Inc.
وینسنت راباود، دکترای گوگل، شرکت
آخرین به روز رسانی: 2017-08-01

چکیده - ما استفاده از منبع رمزگذار/رمزگشا WebP را با PNG در هر دو حالت بدون اتلاف و اتلاف مقایسه می کنیم. ما از مجموعه ای از 12000 تصویر شفاف PNG به طور تصادفی انتخاب شده از وب و اندازه گیری های ساده تر برای نشان دادن تغییرات در عملکرد استفاده می کنیم. ما PNG های موجود در مجموعه خود را مجددا فشرده کرده ایم تا تصاویر WebP را با PNG های بهینه شده با اندازه مقایسه کنیم. در نتایج ما نشان می‌دهیم که WebP جایگزین خوبی برای PNG برای استفاده در وب از نظر اندازه و سرعت پردازش است.

معرفی

WebP از تصاویر بدون اتلاف و شفاف پشتیبانی می کند و آن را جایگزین فرمت PNG می کند. بسیاری از تکنیک های اساسی مورد استفاده در فشرده سازی PNG، مانند کدگذاری فرهنگ لغت، کدگذاری هافمن و تبدیل نمایه سازی رنگ در WebP نیز پشتیبانی می شوند که در بدترین حالت منجر به سرعت و تراکم فشرده سازی مشابه می شود. در عین حال، تعدادی از ویژگی‌های جدید - مانند کدهای آنتروپی مجزا برای کانال‌های رنگی مختلف، محل دوبعدی فاصله‌های مرجع معکوس، و حافظه پنهان رنگی از رنگ‌های اخیراً استفاده شده - باعث افزایش تراکم فشرده‌سازی در بیشتر تصاویر می‌شود.

در این کار، ما عملکرد WebP را با PNG هایی که با استفاده از pngcrush و ZopfliPNG بسیار فشرده شده اند مقایسه می کنیم. ما مجموعه مرجع تصاویر وب خود را با استفاده از بهترین شیوه‌ها مجدداً فشرده کردیم و فشرده‌سازی WebP بدون اتلاف و اتلاف را با این مجموعه مقایسه کردیم. علاوه بر پیکره مرجع، ما دو تصویر بزرگتر، یکی عکاسی و دیگری گرافیکی را برای محک زدن سرعت و استفاده از حافظه انتخاب کردیم.

سرعت رمزگشایی سریعتر از PNG نشان داده شده است و همچنین فشرده سازی 23٪ متراکم تر از آنچه می توان با استفاده از فرمت PNG امروزی بدست آورد. نتیجه می گیریم که WebP جایگزین کارآمدتری برای فرمت تصویر PNG امروزی است. علاوه بر این، فشرده سازی تصویر با اتلاف با پشتیبانی آلفای بدون اتلاف، امکانات بیشتری را در سرعت بخشیدن به وب سایت ها می دهد.

مواد و روش ها

ابزارهای خط فرمان

ما از ابزارهای خط فرمان زیر برای اندازه گیری عملکرد استفاده می کنیم:

  1. cwebp و dwebp. این ابزارها که بخشی از کتابخانه libwebp هستند (کامپایل شده از head).

  2. تبدیل. این یک ابزار خط فرمان بخشی از نرم افزار ImageMagick است (6.7.7-10 2017-07-21).

  3. pngcrush 1.8.12 (30 ژوئیه 2017)

  4. ZopfliPNG (17 ژوئیه 2017)

ما از ابزارهای خط فرمان با پرچم های کنترل مربوطه استفاده می کنیم. به عنوان مثال، اگر به cwebp -q 1 -m 0 اشاره کنیم، به این معنی است که ابزار cwebp با پرچم -q 1 و -m 0 برانگیخته شده است.

مجموعه تصویر

سه مجموعه انتخاب شدند:

  1. یک تصویر عکاسی واحد (شکل 1)،

  2. یک تصویر گرافیکی واحد با شفافیت (شکل 2)، و

  3. یک مجموعه وب: 12000 تصویر PNG به طور تصادفی انتخاب شده با شفافیت یا غیر شفاف، از اینترنت خزیده شده است. این تصاویر PNG از طریق تبدیل، pngcrush، ZopfliPNG بهینه شده اند و کوچکترین نسخه هر تصویر برای مطالعه در نظر گرفته شده است.

شکل 1. تصویر عکاسی، 1024 x 752 پیکسل. Fire breathing "Jaipur Maharaja Brass Band" Chassepierre Belgium, نویسنده: Luc Viatour, Photo دارای مجوز Creative Commons Attribution-Share Alike 3.0 Unported. وب سایت نویسنده اینجاست .

شکل 2. تصویر گرافیکی، 1024 x 752 پیکسل. تصاویر کلاژ از ابزار نمودار گوگل

برای اندازه گیری توانایی کامل فرمت موجود، PNG، همه این تصاویر اصلی PNG را با استفاده از چندین روش فشرده سازی کرده ایم:

  1. گیره به 8 بیت در هر جزء: تبدیل input.png -depth 8 output.png

  2. ImageMagick(1) بدون پیش بینی: تبدیل input.png -کیفیت 90 output-candidate.png

  3. ImageMagick با پیش بینی کننده های تطبیقی: تبدیل input.png -کیفیت 95 output-candidate.png

  4. Pngcrush(2): pngcrush -brute -rem tEXt -rem tIME -rem iTXt -rem zTXt -rem gAMA -rem cHRM -rem iCCP -rem sRGB -rem alla -rem text input.png output-candidate.png

  5. ZopfliPNG(3): zopflipng --lossy_transparent input.png output-candidate.png

  6. ZopfliPNG با همه فیلترها: zopflipng --iterations=500 --filters=01234mepb --lossy_8bit --lossy_transparent input.png output-candidate.png

نتایج

ما چگالی فشرده‌سازی را برای هر یک از تصاویر موجود در پیکره وب، نسبت به اندازه‌های تصویر PNG بهینه‌شده برای سه روش محاسبه کردیم:

  1. WebPlessless (تنظیمات پیش فرض)

  2. WebP بدون اتلاف با کوچکترین اندازه (-m 6 -q 100)

  3. بهترین WebP بی ضرر و WebP با اتلاف با آلفا (تنظیمات پیش فرض).

ما این فاکتورهای فشرده سازی را مرتب کردیم و آنها را در شکل 3 ترسیم کردیم.

شکل 3. چگالی فشرده سازی PNG به عنوان مرجع، در 1.0 استفاده می شود. همین تصاویر با استفاده از دو روش بدون اتلاف و اتلاف فشرده می شوند. برای هر تصویر، نسبت اندازه به PNG فشرده محاسبه می‌شود و نسبت‌های اندازه مرتب می‌شوند و برای فشرده‌سازی بدون تلفات و فشرده‌سازی با اتلاف نشان داده می‌شوند. برای منحنی فشرده سازی با اتلاف، فشرده سازی بدون تلفات در مواردی انتخاب می شود که تصویر WebP کوچکتری تولید می کند.

WebP از تراکم فشرده سازی PNG برای هر دو libpng در حداکثر کیفیت (تبدیل) و همچنین ZopfliPNG (جدول 1) فراتر می رود، با سرعت های رمزگذاری (جدول 2) و رمزگشایی (جدول 3) تقریباً با سرعت های PNG قابل مقایسه است.

جدول 1. میانگین بیت در هر پیکسل برای سه مجموعه با استفاده از روش های مختلف فشرده سازی.

مجموعه تصویر تبدیل با کیفیت 95 ZopfliPNG WebP بدون اتلاف -q 0 -m 1 WebPlessless (تنظیمات پیش فرض) WebP بدون ضرر -m 6 -q 100 WebP از دست رفته با آلفا
عکس 12.3 12.2 10.5 10.1 9.83 0.81
گرافیکی 1.36 1.05 0.88 0.71 0.70 0.51
وب 6.85 5.05 4.42 4.04 3.96 1.92

جدول 2. میانگین زمان رمزگذاری برای پیکره های فشرده سازی و برای روش های مختلف فشرده سازی.

مجموعه تصویر تبدیل با کیفیت 95 ZopfliPNG WebP بدون اتلاف -q 0 -m 1 WebPlessless (تنظیمات پیش فرض) WebP بدون ضرر -m 6 -q 100 WebP از دست رفته با آلفا
عکس 0.500 ثانیه 8.7 ثانیه 0.293 ثانیه 0.780 ثانیه 8.440 ثانیه 0.111 ثانیه
گرافیکی 0.179 ثانیه 14.0 ثانیه 0.065 ثانیه 0.140 ثانیه 3.510 ثانیه 0.184 ثانیه
وب 0.040 ثانیه 1.55 ثانیه 0.017 ثانیه 0.072 ثانیه 2.454 ثانیه 0.020 ثانیه

جدول 3. میانگین زمان رمزگشایی برای سه مجموعه برای فایل های تصویری که با روش ها و تنظیمات مختلف فشرده شده اند.

مجموعه تصویر تبدیل با کیفیت 95 ZopfliPNG WebP بدون اتلاف -q 0 -m 1 WebPlessless (تنظیمات پیش فرض) WebP بدون ضرر -m 6 -q 100 WebP از دست رفته با آلفا
عکس 0.027 ثانیه 0.026 ثانیه 0.027 ثانیه 0.026 ثانیه 0.027 0.012 ثانیه
گرافیک 0.049 ثانیه 0.015 ثانیه 0.005 ثانیه 0.005 ثانیه 0.003 0.010 ثانیه
وب 0.007 ثانیه 0.005 ثانیه 0.003 ثانیه 0.003 ثانیه 0.003 0.003 ثانیه

پروفایل سازی حافظه

برای پروفایل حافظه، ما حداکثر اندازه مجموعه مقیم را که توسط /usr/bin/time -v گزارش شده است، ثبت کردیم.

برای پیکره وب، اندازه بزرگترین تصویر به تنهایی حداکثر استفاده از حافظه را مشخص می کند. برای اینکه اندازه گیری حافظه را بهتر تعریف کنیم، از یک تصویر عکاسی منفرد (شکل 1) برای ارائه یک نمای کلی از استفاده از حافظه استفاده می کنیم. تصویر گرافیکی نتایج مشابهی به دست می دهد.

ما 10 تا 19 مگابایت برای libpng و ZopfliPNG، و 25 مگابایت و 32 مگابایت برای رمزگذاری بدون اتلاف WebP در تنظیمات -q 0 -m 1 و -q 95 (با مقدار پیش‌فرض -m) به ترتیب اندازه‌گیری کردیم.

در آزمایش رمزگشایی، convert -resize 1x1 از 10 مگابایت برای فایل‌های PNG تولید شده توسط libpng و ZopfliPNG استفاده می‌کند. با استفاده از cwebp، رمزگشایی بدون تلفات WebP از 7 مگابایت و رمزگشایی با اتلاف 3 مگابایت استفاده می کند.

نتیجه گیری

ما نشان داده‌ایم که هر دو سرعت رمزگذاری و رمزگشایی در همان دامنه سرعت PNG هستند. افزایش استفاده از حافظه در طول مرحله رمزگذاری وجود دارد، اما مرحله رمزگشایی کاهش سالمی را نشان می‌دهد، حداقل زمانی که رفتار cwebp را با تبدیل ImageMagick مقایسه می‌کنیم.

تراکم فشرده سازی برای بیش از 99 درصد از تصاویر وب بهتر است، که نشان می دهد می توان نسبتاً به راحتی از PNG به WebP تغییر کرد.

وقتی WebP با تنظیمات پیش‌فرض اجرا می‌شود، 42 درصد بهتر از libpng و 23 درصد بهتر از ZopfliPNG فشرده می‌شود. این نشان می دهد که WebP برای سرعت بخشیدن به وب سایت های سنگین تصویر امیدوار کننده است.

منابع

  1. ImageMagick

  2. Pngcrush

  3. ZopfliPNG

موارد زیر مطالعات مستقلی هستند که توسط Google حمایت نمی‌شوند و گوگل لزوماً پشت صحت همه محتویات آنها نمی‌ایستد.

  1. وبلاگ Yoav Weiss