در پیوندهای زیر درباره فیلتر کردن تصویر با کمک کتابخانه OpenCV گفته ایم و در این نوشتار می خواهیم تابعی به نام ()imagefilter را آموزش دهیم. کد زیر الگوی تابع را نشان می دهد که در آن، آرگومان نخست متغیر resource به تصویری است که پیش از این خوانده شده و حال می خواهیم روی آن فیلتر انجام دهیم.

پردازش تصویر – مقدمه ای بر فیلترها

فیلتر تصویر و مفهوم کرنل در پردازش تصویر

فهرست مقدارهای آرگومان دوم – گونه های فیلتر در GD

دومین آرگومان گونه فیلتر روی تصویر را نشان می دهد که می تواند یکی از گزینه های از پیش نوشته شده درون پی اچ پی باشد. در پی اچ پی ۱۲ گونه فیلتر هست که می توانید از این پیوند درباره آنها از آموزش های خود پی اچ پی بیشتر بخوانید.

  • IMG_FILTER_NEGATE: همه رنگ های تصویر را وارونه می کند. در نام این فیلتر، NEGATE کوتاه شده Negative است. در پیوند زیر درباره Negative کردن تصویر در OpenCV گفته ایم.

محاسبات روی ماتریس ها در OpenCV

  • IMG_FILTER_GRAYSCALE: این فیلتر برای تبدیل تصویر رنگی سه کانالی به تصویر خاکستری تک کانالی (Garyscale) به کار می رود. در پیوندهای زیر درباره تصویر خاکستری در پی اچ پی و به کارگیری متد ()cvtColor در OpenCV برای تبدیل تصویر رنگی به تصویر خاکستری گفته ایم.

آشنایی با مفاهیم ابتدایی در OpenCV – تصویر خاکستری و رنگی

  • IMG_FILTER_BRIGHTNESS: تصویر را روشن تر یا تیره تر می کند. به گفته دیگر روشنایی () تصویر را تغییر می دهد. در الگوی تابع که در بالا گفتیم، سومین آرگومان که در الگو arg1 نام دارد، ورودی های از پیش نوشته شده ای در پی اچ پی را دریافت می کند که این ورودی ها مقدارهایی برای تغییر روشنایی تصویر هستند که در زمان تعیین فیلتر IMG_FILTER_BRIGHTNESS به کار می روند.
  • IMG_FILTER_CONTRAST: کنتراست تصویر را افزایش می دهد. مقدارهای از پیش نوشته شده برای سومین آرگومان، arg1، باید به کار گرفته شوند.

تغییر کنتراست و روشنایی تصویر با OpenCV

  • IMG_FILTER_COLORIZE: همانند IMG_FILTER_GRAYSCALE است ولی خودتان باید رنگ را برگزینید. برای این، باید سه آرگومان دیگر به نام arg1 و arg2 و arg3 را به ترتیب برای رنگ های Red و Green و Blue و آرگومان دیگر، arg4 را برای کانال alpha مقدار دهی کنید. مقدار هر کدام از آرگومان ها برای این فیلتر میان صفر تا ۲۵۵ است.
  • IMG_FILTER_EDGEDETECT: تشخیص لبه (Edge Detection) یکی از پایه ای ترین مفاهیم پردازش تصویر است که در پیوند زیر آن را در کتابخانه OpenCV گفته ایم. در پی اچ پی این فیلتر تصویر را به گونه ای تغییر می دهد که لبه های درون تصویر برچسته شوند. در واقع بهتر است بگوییم، ماتریس تصویر را تغییر می دهد تا پیکسل های مربوط به لبه برجسته شوند.

تشخیص لبه ها بوسیله OpenCV و پایتون

تشخیص لبه ها در OpenCV با الگوریتم Canny

  • IMG_FILTER_EMBOSS: مفهوم Image Eembossing یک تکنیک پردازش تصویر است که در آن هر پیکسل تصویر توسط یک پیکسل برجسته (Highlight) یا یک سایه (Shadow) جایگزین می شود که این به مرزهای نور / تاریکی در تصویر اصلی بستگی دارد.
  • IMG_FILTER_GAUSSIAN_BLUR: برای انجام فیلتر Gaussian Blur به کار گرفته می شود. در پیوند زیر درباره فیلتر Gaussian Blur در کتابخانه OpenCV گفته شده است. از این فیلتر برای مات کردن تصویر و از میان بردن نویزها کمک گرفته می شود.

مات کردن تصویر با OpenCV و پایتون

  • IMG_FILTER_SELECTIVE_BLUR: این نیز به شیوه Selective تصویر را مات می کند.
  • IMG_FILTER_MEAN_REMOVA: افکت (یا فیلتر) sketchy (طراحی با مداد سیاه) را بر روی تصویر انجام می دهد.
  • IMG_FILTER_SMOOTH: تصویر را صاف تر (smooth) می کند.

هموار سازی تصویر با OpenCV و پایتون

تبدیل تصویر رنگی به خاکستری در GD پی اچ پی

در زیر کدی نوشته ایم که فیلتر IMG_FILTER_GRAYSCALE را بر روی تصویر انجام دهد که برگشتی آن تبدیل تصویر رنگی (RGB) ورودی به تصویر خاکستری است. در خط ۱۱ از کد می بینید که برای انجام فیلتر IMG_FILTER_GRAYSCALE نیازی نیست که دیگر آرگومان ها را نشان دهیم.

وارونه کردن رنگ های تصویر

برای وارونه کردن تصویر باید فیلتر IMG_FILTER_NEGATE را به کار ببریم. در این فیلتر شماره هر کدام از پیکسل ها از ۲۵۵ کم می شود و سپس شماره بدست آمده جایگزین آن می شود. کد زیر نمونه ای از وارونه سازی یا Negative کردن تصویر را نشان می دهد. این فیلتر نیز همانند IMG_FILTER_GRAYSCALE نیازی به دیگر آرگومان ها ندارد.