فصل ششم — آشنایی با سه فضای رنگ RGB، HSI و HSV#

هدف این فصل کوتاه: یاد بگیریم یک رنگ را چگونه با سه روش متفاوت توصیف کنیم. در اینجا از فرمول‌های طولانی تبدیل رنگ و معرفی سایر فضاهای رنگ صرف‌نظر می‌کنیم.

۶.۱ RGB: رنگ از ترکیب سه نور#

در صفحه‌نمایش، هر نقطه (پیکسل) با سه مؤلفه مشخص می‌شود:

  • R (Red): مقدار نور قرمز

  • G (Green): مقدار نور سبز

  • B (Blue): مقدار نور آبی

در یک تصویر معمول ۸ بیتی در هر کانال، مقدار هر مؤلفه از 0 تا 255 است. برای مثال، (255, 0, 0) قرمز، (0, 255, 0) سبز و (0, 0, 255) آبی است. اگر قرمز و سبز هر دو زیاد باشند و آبی صفر باشد، رنگ زرد خواهیم داشت: (255, 255, 0).

../_images/fig06_01_rgb_examples.png

Fig. 258 چند نمونه از ترکیب سه مؤلفهٔ RGB. سه عدد زیر هر رنگ به‌ترتیب مقادیر قرمز، سبز و آبی‌اند.#

نکته: وقتی سه مقدار برابر باشند، رنگی از طیف خاکستری داریم؛ مانند (120, 120, 120). هر سه مقدار صفر یعنی سیاه و هر سه مقدار 255 یعنی سفید.

۶.۲ چرا به HSI و HSV نیاز داریم؟#

فرض کنید می‌خواهیم از یک تصویر، تمام اشیای قرمز را جدا کنیم. کار با سه عدد R، G و B ممکن است، اما برای بیان «این پیکسل چه رنگی است؟» روش شهودی‌تری نیز داریم: رنگ را با نام رنگ، میزان رنگی‌بودن و میزان روشنایی توصیف کنیم. دو مدل HSI و HSV بر همین ایده بنا شده‌اند.

H یا فام (Hue): چه رنگی می‌بینیم؟#

H زاویه‌ای روی دایرهٔ رنگ، معمولاً از 0 تا 360 درجه است. برای رنگ‌های خالصِ زیر:

فام

زاویهٔ تقریبی H

قرمز

0° یا 360°

زرد

60°

سبز

120°

آبی

240°

../_images/fig06_02_hue_circle.png

Fig. 259 دایرهٔ فام: زاویه، خانوادهٔ رنگ را تعیین می‌کند؛ نه میزان روشنی آن را.#

در یک پیکسل کاملاً خاکستری، فام معنی ندارد؛ زیرا هیچ رنگی بر دیگری غالب نیست. در بعضی نرم‌افزارها برای سهولت مقدار H=0 ذخیره می‌شود، اما این به معنی قرمز بودن خاکستری نیست.

S یا اشباع (Saturation): رنگ چقدر خالص یا خاکستری است؟#

  • S نزدیک صفر: رنگ به خاکستری نزدیک است.

  • S بزرگ‌تر: رنگ پررنگ‌تر و کمتر متمایل به خاکستری است.

مثلاً صورتی کم‌رنگ و قرمز زنده می‌توانند فام قرمز داشته باشند، ولی اشباع آن‌ها متفاوت است. S به معنی «تعداد رنگ‌های موجود در تصویر» نیست. تعریف و عدد اشباع در HSI و HSV دقیقاً یکسان نیست؛ هرچند تفسیر ابتدایی آن‌ها مشابه است.

۶.۳ تفاوت اصلی HSI و HSV#

هر دو مدل از H و S استفاده می‌کنند، اما مؤلفهٔ سوم آن‌ها متفاوت است:

  • HSI = Hue, Saturation, Intensity. مؤلفهٔ I میانگین سه کانال RGB است: (I=(R+G+B)/3).

  • HSV = Hue, Saturation, Value. مؤلفهٔ V بزرگ‌ترین مقدار میان سه کانال RGB است: (V=\max(R,G,B)).

در این دو رابطه فرض کرده‌ایم R و G و B در بازهٔ 0 تا 255 هستند؛ بنابراین I و V نیز در همین بازه‌اند.

برای یک پیکسل قرمز خالص با RGB = (255, 0, 0):

  • در HSI، مقدار I = 85 است؛ چون میانگین سه عدد را گرفته‌ایم.

  • در HSV، مقدار V = 255 است؛ چون بزرگ‌ترین کانال را انتخاب کرده‌ایم.

../_images/fig06_03_intensity_vs_value.png

Fig. 260 مقایسهٔ I و V برای چهار رنگ. طول هر نوار با مقدار عددی متناظر از 0 تا 255 متناسب است.#

پس I و V را نباید یک کمیت یکسان تصور کنیم. همچنین هیچ‌کدام، به‌تنهایی، اندازه‌گیری دقیق روشنایی ادراک‌شده توسط چشم انسان نیستند.

مدل

پرسش ساده‌ای که پاسخ می‌دهد

استفادهٔ نمونه

RGB

هر کانال نور چقدر است؟

نمایش و ذخیرهٔ تصاویر رنگی

HSI

رنگ، اشباع و میانگین شدت کانال‌ها چیست؟

تحلیل آموزشی مؤلفه‌های رنگ

HSV

رنگ، اشباع و بیشترین مقدار کانال چیست؟

انتخاب و جداسازی سادهٔ رنگ‌ها

۶.۴ یک کاربرد بسیار ساده: جداکردن شیء قرمز#

در مثال زیر، یک شکل قرمز، یک شکل سبز و یک شکل آبی روی پس‌زمینهٔ خاکستری داریم. با تبدیل هر پیکسل از RGB به HSV و انتخاب فام نزدیک به قرمز همراه با اشباع کافی، می‌توانیم فقط ناحیهٔ قرمز را سفید و بقیه را سیاه کنیم.

../_images/fig06_04_hsv_red_mask.png

Fig. 261 سمت چپ: تصویر مصنوعی آموزشی. سمت راست: ماسک به‌دست‌آمده از شرط فام قرمز و اشباع کافی در فضای HSV.#

برای اجرای کد، فقط بستهٔ Pillow لازم است. برنامه با ماژول استاندارد colorsys پایتون نیز کار می‌کند:

دانلود کد کوتاه Python · دانلود Notebook · تصویر ورودی نمونه

تذکر: در تصاویر واقعی، تغییر نور، سایه و انعکاس می‌تواند مقدار رنگ را عوض کند؛ بنابراین انتخاب رنگ در HSV همیشه بی‌خطا نیست.

۶.۵ مرور در یک دقیقه#

اگر بخواهیم با سه کلمه این فصل را به خاطر بسپاریم: RGB یعنی مقدار سه نور؛ H یعنی خانوادهٔ رنگ؛ S یعنی میزان فاصله از خاکستری. مؤلفهٔ سوم در HSI میانگین و در HSV بیشینهٔ سه کانال است.

سه پرسش کوتاه:

  1. چرا (100, 100, 100) خاکستری است؟

  2. فام سبز و آبی خالص تقریباً چند درجه است؟

  3. برای (255, 0, 0)، چرا I = 85 ولی V = 255 می‌شود؟

منبع پایه: Gonzalez & Woods, Digital Image Processing, 4th ed., بخش مربوط به پردازش تصویر رنگی. مثال‌ها، شکل‌ها و کد این جزوه برای آموزش مستقل تهیه شده‌اند.