GDAL-RASTER-COLOR-BLEND(1) GDAL GDAL-RASTER-COLOR-BLEND(1)

gdal-raster-color-blend - استفاده از یک رستر مقیاس خاکستری برای جایگزینی شدت نور در مجموعه داده‌های RGB/RGBA

در نسخه 3.12 اضافه شد.

کاربرد: gdal raster blend [گزینه‌ها] <COLOR-INPUT> <OVERLAY> <OUTPUT>
آمیختگی/ترکیب دو مجموعه داده رستر
آرگومان‌های موضعی:
  -i, --color-input, --input <COLOR-INPUT>             مجموعه داده رستر ورودی [الزامی] [در خطوط لوله در دسترس نیست]
  --overlay <OVERLAY>                                  مجموعه داده لایه رویی [الزامی]
  -o, --output <OUTPUT>                                مجموعه داده رستر خروجی [الزامی] [در خطوط لوله در دسترس نیست]
گزینه‌های عمومی:
  -h, --help                                           نمایش پیام راهنما و خروج
  --json-usage                                         نمایش شیوه استفاده به صورت سند JSON و خروج
  --config <KEY>=<VALUE>                               گزینه پیکربندی [تکرارپذیر]
  -q, --quiet                                          حالت بی‌صدا (عدم نمایش نوار پیشرفت یا پیام‌های هشدار) [در خطوط لوله در دسترس نیست]
گزینه‌ها:
  -f, --of, --format, --output-format <OUTPUT-FORMAT>  قالب خروجی (مقدار "GDALG" مجاز است) [در خطوط لوله در دسترس نیست]
  --co, --creation-option <KEY>=<VALUE>                گزینه ایجاد [تکرارپذیر] [در خطوط لوله در دسترس نیست]
  --overwrite                                          آیا رونویسی روی مجموعه داده خروجی موجود مجاز است [در خطوط لوله در دسترس نیست]
                                                       ناسازگار با --append
  --append                                             افزودن به عنوان زیرمجموعه‌داده به خروجی موجود [در خطوط لوله در دسترس نیست]
                                                       ناسازگار با --overwrite
  --operator <OPERATOR>                                عملگر ترکیب. OPERATOR=src-over|hsv-value|multiply|screen|overlay|hard-light|darken|lighten|color-dodge|color-burn (پیش‌فرض: src-over)
  --opacity <OPACITY>                                  درصد کدر بودن برای اعمال روی مجموعه داده رویی (0=کاملاً شفاف، 100=استفاده کامل از کدری لایه رویی) (پیش‌فرض: 100)
گزینه‌های پیشرفته:
  --if, --input-format <INPUT-FORMAT>                  قالب‌های ورودی [تکرارپذیر] [در خطوط لوله در دسترس نیست]
  --oo, --open-option <KEY>=<VALUE>                    گزینه‌های باز کردن [تکرارپذیر] [در خطوط لوله در دسترس نیست]

دستور gdal raster blend به کاربر امکان می‌دهد دو مجموعه داده رستر (با اندازه یکسان) را با استفاده از یک عملیات آمیختگی انتخابی و یک تنظیمات کدر بودن (شفافیت) ترکیب کند.

این قابلیت می‌تواند به عنوان مثال برای رنگ‌آمیزی یک رستر سایه‌روشن پستی‌بلندی‌ها (hillshade) تولید شده توسط gdal raster hillshade با استفاده از یک رندرینگ ارتفاع‌سنجی (هیپسومتریک) از مدل رقومی ارتفاع (DEM) تولید شده توسط gdal raster color-map در هنگام استفاده از عملگر آمیختگی hsv-value استفاده شود.

عملگر استانداردتر آمیختگی src-over که «آمیختگی آلفا» (alpha blending) را انجام می‌دهد نیز در دسترس است.

این زیردستور همچنین به عنوان یک مرحله بالقوه از gdal raster pipeline در دسترس است.

این برنامه از سریال‌سازی خط فرمان به عنوان یک فایل JSON با استفاده از قالب خروجی GDALG پشتیبانی می‌کند. سپس فایل حاصل می‌تواند با استفاده از درایور GDALG: GDAL Streamed Algorithm به عنوان یک مجموعه داده رستر باز شود و خط لوله مشخص‌شده را به صورت درجا (on-the-fly) یا جریانی (streamed) اعمال کند.

نام مجموعه داده‌ای که مجموعه داده رویی در آن ترکیب و آمیخته می‌شود. الزامی است.

هنگام استفاده از عملگر آمیختگی hsv-value، این باید یک رستر بایت (Byte) سه‌بانده یا چهاربانده باشد.

میزان کدر بودن (Opacity) برای استفاده در آمیختگی مجموعه داده رویی، به صورت درصدی بین 0 تا 100. مقدار 0 بدین معنی است که مجموعه داده رویی کاملاً شفاف در نظر گرفته می‌شود. مقدار 100 بدین معنی است که مجموعه داده رویی در حداکثر کانال آلفای خود آمیخته می‌شود. پیش‌فرض 100 است.
انتخاب عملگر آمیختگی، که مشخص می‌کند مجموعه داده رویی چگونه با مجموعه داده ورودی ترکیب شود. مقدار پیش‌فرض src-over است.

برای جزئیات بیشتر درباره هر عملگر، بخش جزئیات عملیات‌های آمیختگی را در ادامه ببینید.

نام مجموعه داده رویی (اورلی). الزامی است.

افزودن رستر ورودی به عنوان یک زیرمجموعه‌داده (subdataset) جدید به یک فایل خروجی موجود. تنها با درایورهایی کار می‌کند که از افزودن زیرمجموعه‌داده‌ها پشتیبانی می‌کنند مانند GTiff -- GeoTIFF File Format و GPKG -- GeoPackage raster. اگر مجموعه داده خروجی هنوز وجود نداشته باشد، آن را نیز ایجاد می‌کند.
بسیاری از قالب‌ها یک یا چند گزینه اختیاری ایجاد دارند که می‌توان از آن‌ها برای کنترل ویژگی‌های دقیق فایل ایجادشده استفاده کرد. به عنوان مثال، درایور GeoTIFF از گزینه‌های ایجاد برای کنترل فشرده‌سازی و کاشی‌بندی شدن فایل پشتیبانی می‌کند.

می‌تواند تکرار شود.

گزینه‌های ایجاد موجود بسته به درایور قالب متفاوت است و برخی قالب‌های ساده هیچ گزینه ایجادی ندارند. فهرستی از گزینه‌های پشتیبانی‌شده برای هر قالب را می‌توان با گزینه خط فرمان --formats مشاهده کرد، اما مستندات خود قالب، منبع قطعی اطلاعات درباره گزینه‌های ایجاد درایور است. برای گزینه‌های ایجاد معتبر هر قالب، به مستندات ویژه قالب در Raster drivers مراجعه کنید.

نام قالب/درایوری که باید برای باز کردن فایل(های) ورودی امتحان شود. به طور کلی نیازی به تعیین آن نیست، اما می‌توان از آن برای چشم‌پوشی از تشخیص خودکار درایور در مواردی که در انتخاب درایور مناسب ناموفق است استفاده کرد. این گزینه می‌تواند چندین بار تکرار شود تا چند درایور کاندید مشخص شوند. توجه داشته باشید که این گزینه آن درایورها را وادار به باز کردن مجموعه داده نمی‌کند. به ویژه، برخی درایورها الزاماتی روی پسوند فایل دارند.

می‌تواند تکرار شود.

گزینه باز کردن مجموعه داده (ویژه قالب).

می‌تواند تکرار شود.

تعیین قالب رستر خروجی برای استفاده. مقادیر مجاز را می‌توان با دستور زیر به دست آورد: gdal --formats | grep raster | grep rw | sort
به برنامه اجازه می‌دهد تا در صورت وجود فایل یا مجموعه داده مقصد، آن را بازنویسی کند. در غیر این صورت، به طور پیش‌فرض، اگر فایل یا مجموعه داده مقصد از قبل وجود داشته باشد، gdal با خطا متوقف می‌شود.

در توصیف عملیات‌های آمیختگی، تمام مقادیر به بازه [0,1] نرمال‌سازی شده‌اند و مقدار هر کانال از پیش در مقدار کانال آلفا ضرب شده است (premultiplied).

علائم و نمادهای زیر استفاده شده‌اند:

  • نماد overlay_{C} مقدار یکی از مؤلفه‌های قرمز، سبز یا آبی مجموعه داده رویی است،
  • نماد overlay_{A} مقدار مؤلفه آلفای مجموعه داده رویی ضرب‌شده در --opacity است،
  • نماد input_{C} مقدار مؤلفه متناظر مجموعه داده ورودی است،
  • نماد input_{A} مقدار مؤلفه آلفای مجموعه داده ورودی است،
  • نماد output_{C} مؤلفه حاصل در مجموعه داده خروجی است،
  • نماد opacity مقدار --opacity است.

نکته:

به منظور کارایی، پیاده‌سازی به جای محاسبات ممیز شناور در بازه [0,1]، از محاسبات اعداد صحیح در بازه [0,255] استفاده می‌کند. این موضوع تفاوت‌های جزئی با فرمول‌های توصیف‌شده در ادامه را توضیح می‌دهد.

برای تمام عملگرها (مگر در مواردی که خلاف آن مشخص شده باشد) کانال آلفا به صورت زیر محاسبه می‌شود:


output_{A} = overlay_{A} + input_{A} - overlay_{A} * input_{A}

عملگرهای آمیختگی زیر در دسترس هستند:

عملگر توضیحات مثال
src-over آمیختگی آلفای استاندارد (ترکیب لایه رویی روی ورودی) [تصویر: نمونه آمیختگی src-over] [تصویر]
hsv-value استفاده از مقدار روشنایی (Value) از لایه رویی و فام/اشباع (Hue/Saturation) از ورودی [تصویر: نمونه آمیختگی hsv-value] [تصویر]
multiply ضرب رنگ‌های ورودی و لایه رویی [تصویر: نمونه آمیختگی multiply] [تصویر]
screen متمم کردن و سپس ضرب رنگ‌ها [تصویر: نمونه آمیختگی screen] [تصویر]
overlay ترکیب حالت‌های ضرب (Multiply) و غربال (Screen) [تصویر: نمونه آمیختگی overlay] [تصویر]
hard-light ضرب یا غربال بسته به روشنایی لایه رویی [تصویر: نمونه آمیختگی hard-light] [تصویر]
darken نگه‌داشتن حداقل مؤلفه‌های ورودی و لایه رویی [تصویر: نمونه آمیختگی darken] [تصویر]
lighten نگه‌داشتن حداکثر مؤلفه‌های ورودی و لایه رویی [تصویر: نمونه آمیختگی lighten] [تصویر]
color-dodge روشن‌تر کردن ورودی بر اساس لایه رویی [تصویر: نمونه آمیختگی color-dodge] [تصویر]
color-burn تیره‌تر کردن ورودی بر اساس لایه رویی [تصویر: نمونه آمیختگی color-burn] [تصویر]
•
عملگر src-over آمیختگی آلفای استاندارد را با ترکیب مجموعه داده رویی بر روی مجموعه داده ورودی انجام می‌دهد.

فرمول زیر برای هر یک از مؤلفه‌های قرمز، سبز و آبی اعمال می‌شود:


output_{C} * output_{A} = (overlay_{C} * overlay_{A} * opacity) + (input_{C} * input_{A} * (1 - overlay_{A} * opacity))

•
عملگر hsv-value رنگی با مقدار روشنایی (Value) لایه رویی و فام (Hue) و اشباع (Saturation) ورودی ایجاد می‌کند. این عملگر مراحل زیر را انجام می‌دهد:
  • خواندن مؤلفه‌های RGB (قرمز، سبز، آبی) مجموعه داده ورودی
  • تبدیل مؤلفه‌های RGB به فضای رنگی HSV (فام، اشباع، روشنایی)
  • محاسبه مقدار خروجی output_{V} با استفاده از فرمول زیر:


output_{V} = (overlay_{V} * overlay_{A} * opacity) + (input_{V} * (1 - overlay_{A} * opacity))

اگر مجموعه داده رویی یک مجموعه داده RGB/RGBA باشد، مقدار overlay_{V} برابر با max(overlay_{R},overlay_{G},overlay_{B}) خواهد بود.

•
تبدیل مجدد (فام، اشباع، :math:output_{V}) به RGB.

اگر کانال آلفای مجموعه داده ورودی وجود داشته باشد، بدون تغییر حفظ می‌شود.

•
عملگر multiply رنگ‌های ورودی و لایه رویی را در هم ضرب می‌کند.
رنگ حاصل همواره دست‌کم به اندازه یکی از دو رنگ تشکیل‌دهنده تیره است.

فرمول زیر برای هر یک از مؤلفه‌های قرمز، سبز و آبی اعمال می‌شود:


output_{C} = overlay_{C} * input_{C} + input_{C} * (1 - overlay_{A}) + overlay_{C} * (1 - input_{A})

•
عملگر screen: ورودی و لایه رویی متمم شده و سپس در هم ضرب می‌شوند. رنگ حاصل همواره دست‌کم به اندازه یکی از دو رنگ تشکیل‌دهنده روشن است. غربال کردن هر رنگی با رنگ سفید، رنگ سفید تولید می‌کند. غربال کردن هر رنگی با رنگ سیاه، رنگ اصلی را بدون تغییر باقی می‌گذارد.
فرمول زیر برای هر یک از مؤلفه‌های قرمز، سبز و آبی اعمال می‌شود:


output_{C} = overlay_{C} + input_{C} - overlay_{C} * input_{C}

•
عملگر overlay: این عملگر حالت‌های آمیختگی Multiply (ضرب) و Screen (غربال) را با نصف قدرت ترکیب می‌کند. بخش‌هایی از لایه رویی که در آن‌ها لایه ورودی روشن است روشن‌تر می‌شوند و بخش‌هایی که در آن‌ها لایه ورودی تیره است تیره‌تر می‌شوند. نواحی که لایه رویی خاکستری میانه است بدون تغییر باقی می‌مانند.
فرمول زیر برای هر یک از مؤلفه‌های قرمز، سبز و آبی اعمال می‌شود:

اگر مؤلفه ورودی کمتر از 0.5 باشد (تیره):


output_{C} = 2 * overlay_{C} * input_{C} + input_{C} * (1 - overlay_{A}) + overlay_{C} * (1 - input_{A})

اگر مؤلفه ورودی بزرگتر یا مساوی 0.5 باشد (روشن):


output_{C} = overlay_{A} * input_{A} - 2 * (input_{A} - input_{C}) * (overlay_{A} - overlay_{C}) + input_{C} * (1 - overlay_{A}) + overlay_{C} * (1 - input_{A})

•
عملگر hard-light: لایه رویی بسته به مقدار رنگ لایه رویی، برای ضرب یا غربال ورودی استفاده می‌شود. اگر مقدار رنگ لایه رویی روشن‌تر از خاکستری 50% باشد، ورودی غربال می‌شود، در غیر این صورت ضرب می‌شود. این ویژگی برای افزودن هایلایت‌ها یا سایه‌ها به یک تصویر مفید است. پیاده‌سازی آن مشابه overlay است اما نقش ورودی و لایه رویی با یکدیگر جابه‌جا شده است.
فرمول زیر برای هر یک از مؤلفه‌های قرمز، سبز و آبی اعمال می‌شود:

اگر مؤلفه لایه رویی کمتر از 0.5 باشد (تیره):


output_{C} = overlay_{A} * input_{A} - 2 * (input_{A} - input_{C}) * (overlay_{A} - overlay_{C}) + input_{C} * (1 - overlay_{A}) + overlay_{C} * (1 - input_{A})

اگر مؤلفه لایه رویی بزرگتر یا مساوی 0.5 باشد (روشن):


output_{C} = 2 * overlay_{C} * input_{C} + input_{C} * (1 - overlay_{A}) + overlay_{C} * (1 - input_{A})

•
عملگر darken: تصویری ایجاد می‌کند که کوچک‌ترین مؤلفه‌های پیکسل‌های ورودی و لایه رویی را حفظ می‌کند. اگر پیکسل لایه رویی دارای مؤلفه‌های r1، g1 و b1 باشد و پیکسل ورودی دارای r2، g2 و b2 باشد، پیکسل حاصل [min(r1,r2), min(g1,g2), min(b1,b2)] خواهد بود.
فرمول زیر برای هر یک از مؤلفه‌های قرمز، سبز و آبی اعمال می‌شود:


output_{C} = min(overlay_{C}, input_{C}) + input_{C} * (1 - overlay_{A}) + overlay_{C} * (1 - input_{A})

•
عملگر lighten: این عملگر عکس عمل Darken عمل می‌کند. حداکثر مقدار هر مؤلفه را از میان پیکسل‌های لایه رویی و ورودی انتخاب می‌کند. اگر پیکسل لایه رویی دارای مؤلفه‌های r1، g1 و b1 باشد و پیکسل ورودی دارای r2، g2 و b2 باشد، پیکسل حاصل [max(r1,r2), max(g1,g2), max(b1,b2)] خواهد بود.
فرمول زیر برای هر یک از مؤلفه‌های قرمز، سبز و آبی اعمال می‌شود:


output_{C} = max(overlay_{C}, input_{C}) + input_{C} * (1 - overlay_{A}) + overlay_{C} * (1 - input_{A})

•
عملگر color-dodge: لایه ورودی را بر لایه رویی معکوس‌شده تقسیم می‌کند. این کار لایه ورودی را بسته به مقدار لایه رویی روشن‌تر می‌کند: هر چه لایه رویی روشن‌تر باشد، رنگ آن تأثیر بیشتری بر لایه ورودی می‌گذارد. آمیختگی هر رنگی با رنگ سفید منجر به رنگ سفید می‌شود. آمیختگی با رنگ سیاه تصویر را تغییر نمی‌دهد.
فرمول زیر برای هر یک از مؤلفه‌های قرمز، سبز و آبی اعمال می‌شود:

اگر مقدار overlay_{C} * input_{A} بزرگتر یا مساوی overlay_{A} * input_{A} باشد:


output_{C} = overlay_{A} * input_{A} + input_{C} * (1 - overlay_{A}) + overlay_{C} * (1 - input_{A})

اگر مقدار overlay_{C} * input_{A} کمتر از overlay_{A} * input_{A} باشد:


output_{C} = input_{C} * overlay_{A} / (1 - overlay_{C} / overlay_{A}) + overlay_{C} * (1 - input_{A}) + input_{C} * (1 - overlay_{A})

•
عملگر color-burn: لایه ورودی معکوس‌شده را بر لایه رویی تقسیم کرده و سپس نتیجه را معکوس می‌کند. این کار لایه رویی را تیره کرده و کنتراست را برای انعکاس رنگ لایه ورودی افزایش می‌دهد. هرچه لایه ورودی تیره‌تر باشد، رنگ آن بیشتر استفاده می‌شود.
فرمول زیر برای هر یک از مؤلفه‌های قرمز، سبز و آبی اعمال می‌شود:

اگر مقدار overlay_{C} * input_{A} بزرگتر یا مساوی overlay_{A} * input_{A} باشد:


output_{C} = overlay_{A} * input_{A} + input_{C} * (1 - overlay_{A}) + overlay_{C} * (1 - input_{A})

اگر مقدار overlay_{C} * input_{A} کمتر از overlay_{A} * input_{A} باشد:


output_{C} = input_{C} * overlay_{A} / (1 - overlay_{C} / overlay_{A}) + overlay_{C} * (1 - input_{A}) + input_{C} * (1 - overlay_{A})

این برنامه در صورت موفقیت کد وضعیت 0 و در صورت بروز خطا مقدار غیرصفر برمی‌گرداند (خطاهای غیرمسدودکننده که به صورت هشدار صادر می‌شوند، به عنوان اجرای موفق در نظر گرفته می‌شوند).

$ gdal raster blend --opacity 75 source.tif overlay.tif out.tif

[تصویر: رندرینگ سایه‌روشن پستی‌بلندی از DEM] [تصویر] [تصویر: رندرینگ ارتفاع‌سنجی از DEM] [تصویر]

$ gdal raster blend --overlay=hillshade.tif --operator=hsv-value \
                    hypsometric.tif hypsometric_combined_with_hillshade.tif
[تصویر: سایه‌روشن پستی‌بلندی رنگ‌آمیزی‌شده] [تصویر]

$ gdal raster blend --overlay=hillshade.tif --operator=multiply \
                    hypsometric.tif hypsometric_combined_with_hillshade.tif

[تصویر: سایه‌روشن پستی‌بلندی رنگ‌آمیزی‌شده] [تصویر]

$ gdal raster blend --overlay=hillshade.tif --operator=screen \
                    hypsometric.tif hypsometric_combined_with_hillshade.tif

[تصویر: سایه‌روشن پستی‌بلندی رنگ‌آمیزی‌شده] [تصویر]

$ gdal raster blend --overlay=hillshade.tif --operator=overlay \
                    hypsometric.tif hypsometric_combined_with_hillshade.tif

[تصویر: سایه‌روشن پستی‌بلندی رنگ‌آمیزی‌شده] [تصویر]

$ gdal raster blend --overlay=hillshade.tif --operator=hard-light \
                    hypsometric.tif hypsometric_combined_with_hillshade.tif

[تصویر: سایه‌روشن پستی‌بلندی رنگ‌آمیزی‌شده] [تصویر]

$ gdal raster blend --overlay=hillshade.tif --operator=darken \
                    hypsometric.tif hypsometric_combined_with_hillshade.tif

[تصویر: سایه‌روشن پستی‌بلندی رنگ‌آمیزی‌شده] [تصویر]

$ gdal raster blend --overlay=hillshade.tif --operator=lighten \
                    hypsometric.tif hypsometric_combined_with_hillshade.tif

[تصویر: سایه‌روشن پستی‌بلندی رنگ‌آمیزی‌شده] [تصویر]

$ gdal raster blend --overlay=hillshade.tif --operator=color-dodge \
                    hypsometric.tif hypsometric_combined_with_hillshade.tif

[تصویر: سایه‌روشن پستی‌بلندی رنگ‌آمیزی‌شده] [تصویر]

$ gdal raster blend --overlay=hillshade.tif --operator=color-burn \
                    hypsometric.tif hypsometric_combined_with_hillshade.tif

[تصویر: سایه‌روشن پستی‌بلندی رنگ‌آمیزی‌شده] [تصویر]

Even Rouault <even.rouault@spatialys.com>

1998-2026

August 18, 2026