برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

Array Indexing در پایتون
17 بازدید
۱۴۰۵-۰۱-۲۹
6 دقیقه
  • نویسنده: Sepehr Kouzegaran
  • درباره نویسنده: ---

در قسمت قبل با نحوه‌ی پیاده سازی فیلتر میانه و تولید نویز ضربه ‌ای به روش گوسی ترکیبی در پایتون آشنا شدیم. در این قسمت از آموزش می‌خواهیم به کاربرد Array Indexing هنگام کارکردن با تصاویر بپردازیم. در این آموزش با نحوه‌ی بدست آوردن برشی از تصویر و تغییر مقدار پیکسل های قسمت انتخاب شده در تصویر آشنا می‌شویم.

کد های پایتون نوشته شده در این آموزش، در یک فایل ژوپیتر نوت بوک نوشته شده اند. لینک دانلود فایل ژوپیتر نوت بوک مربوط به این آموزش در انتهای صفحه قرار داده شده است.

برای تعریف آرایه ها، کتابخانه numpy برای ترسیم نمودار، کتابخانه matplotlib و برای خواندن تصویر کتابخانه cv2 را import می‌کنیم.

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

می‌خواهیم یک تصویر سیاه با ارتفاع 100 و عرض 150 پیکسل ایجاد کنیم. با استفاده از تابع zeros یک ماتریس سه بعدی با ابعاد مورد نظر تعریف می‌کنیم. چون می‌خواهیم تصویر به صورت RGB باشد، بعد سوم را 3 در نظر می‌گیریم (3 کانال برای R، G و B). با imshow ماتریس را نمایش می‌دهیم.

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

تصویر خروجی:

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

می‌خواهیم رنگ تصویر را به قرمز تغییر دهیم. کانال Red را انتخاب کرده (اندیس صفر در بعد سوم) و مقدار همه‌ی پیکسل های این کانال را به بیشترین مقدار یعنی 255 تغییر می‌دهیم.

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

تصویر خروجی:

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

می‌خواهیم ستون‌های 20 تا 70 از ماتریس یا به عبارت دیگر پیکسل های 20 تا 70 در راستای عرض تصویر را به رنگ آبی تغییر دهیم. برای اینکار همه‌ی سطرها و ستون های 20 تا 70 را انتخاب می‌کنیم همچنین از بعد سوم اندیس 2 را انتخاب می‌کنیم (کانال Blue)  و مقدار این برش از تصویر را به 255 تغییر می‌دهیم تا این قسمت از تصویر با رنگ آبی نمایش داده شود.

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

تصویر خروجی:

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

در تصویر قبلی که ایجاد کردیم، می‌خواهیم یک مستطیل سبز رنگ با عرض 60 و ارتفاع 30 پیکسل  ایجاد کنیم. مختصات گوشه‌ی سمت چپ بالای این مستطیل را  (80, 10) در نظر می‌گیریم. سطرها و ستون های مورد نظر را انتخاب کرده و کانال سبز (اندیس 1 در بعد سوم) را انتخاب می‌کنیم و مقدار این پیکسل ها را به 255 تغییر می‌دهیم.

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

تصویر خروجی:

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

اگر مقدار پیکسل‌های انتخاب شده در همه‌ی کانال ها را به 255 تغییر دهیم، مستطیل رسم شده به رنگ سفید نمایش داده می‌شود.

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

تصویر خروجی:

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

در تصویر سیاه که در ابتدا ایجاد کردیم، می‌خواهیم ربع اول آن به رنگ سفید، ربع دوم به رنگ قرمز، ربع سوم تصویر به رنگ آبی و ربع چهارم هم به رنگ سبز نمایش داده شود. برای پیاده سازی هر قسمت این مثال ابتدا سطر و ستون های مورد نظر را انتخاب کرده و در کانال مورد نظر مقدار 255 را می‌نویسیم.

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

تصویر خروجی:

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

الان می‌خواهیم یک تصویر را از فایل خوانده و روی آن تغییرات اعمال کنیم. از تصویر baboon استفاده می‌کنیم. برای خواندن تصویر از cv2.imread استفاده می‌کنیم. کتابخانه‌ی cv2 تصویر را در فرمت BGR می‌خواند در حالی که کتابخانه‌ی matplotlib موقع نمایش تصویر با imshow، تصویر را در فرمت RGB در نظر می‌گیرد. برای اینکه موقع نمایش تصویر، خروجی به درستی نشان داده شود با استفاده از cvtColor تصویر خوانده شده را به فرمت RGB تبدیل می‌کنیم.

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

تصویر خروجی:

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

می‌خواهیم برشی از تصویر را بدست آورده و آن را نمایش دهیم. در راستای ارتفاع تصویر از ابتدا تا نصف آن و در راستای عرض تصویر از 250 تا 450 را انتخاب می کنیم.

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

تصویر خروجی:

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

می‌خواهیم ربع اول از تصویر را انتخاب کرده و کانال های قرمز و سبز را حذف کنیم (مقدار پیکسل‌های کانال قرمز و سبز را به صفر تغییر دهیم). سطر ها و ستون های متناظر برای انتخاب شدن ربع اول را انتخاب کرده و از بعد سوم اندیس های 0 و 1 را انتخاب می‌کنیم (کانال قرمز و سبز). مقدار پیکسل های انتخاب شده را به صفر تغییر می‌دهیم. با بررسی خروجی می‌توان مشاهده کرد که فقط پیکسل های کانال آبی در ربع اول باقی مانده است.

تصویر خروجی:

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

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

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

تصویر خروجی:

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

می‌خواهیم ربع سوم از تصویر به صورت سیاه سفید نمایش داده شود. چون تصویر در فرمت RGB می‌باشد بنابراین برای اینکه در این فرمت، تصویر به صورت سیاه سفید نمایش داده شود کافیست مقدار یکسان در همه‌ی کانال های یک پیکسل قرار دهیم. به صورت ساده می‌توان این مقدار gray level را برای هر پیکسل، با میانگین گرفتن مقدار پیکسل هر سه کانال بدست آوریم.

ربع سوم تصویر (قسمت مورد نظر) را انتخاب کرده و در راستای بعد سوم (بعد کانال) میانگین‌گیری می‌کنیم و مقدار میانگین پیکسل در هر سه کانال را بدست می‌آوریم (np.mean(img[height//2:, :width//2, :], axis=2)). مقادیر بدست آمده از نوع float می‌باشد، با استفاده از astype مقادیر را به نوع int تبدیل می‌کنیم. میانگین گیری در بعد سوم، باعث می‌شود بعد سوم حذف شود و در خروجی یک ماتریس دو بعدی بدست آوریم. برای اینکه بتوانیم مقدار پیکسل ها در ربع سوم را تغییر دهیم بایستی این ماتریس را به یک ماتریس سه بعدی تبدیل کنیم. با reshape به ماتریس، بعد سوم را اضافه می‌کنیم. در قسمت انتخاب شده مقادیر میانگین بدست آمده را قرار می‌دهیم.

شاید برای شما مفید باشد:
اندازه گیری هوشمند Smart metring در IOT | راهنمای جامع روش‌های اندازه‌گیری جریان (شنت، CT و اثر هال)

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

تصویر خروجی:

برش تصویر، مدیریت کانال‌های رنگی و ویرایش پیکسل‌ها با Array Indexing در پایتون

فایل کد های این آموزش را می توانید از لینک گیت هاب زیر دانلود نمایید:

https://github.com/sphrk/array_indexing_examples_in_python

اطلاعات
17
0
0
اشتراک و حمایت
profile نویسنده: Sepehr Kouzegaran متخصص الکترونیک

ویراستار: حسین زنجانی زاده
مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
family

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله