پاک کردن تصاویر یک تکنیک ارزشمند است، خواه برای تجزیه و تحلیل بیشتر باشد یا صرفاً برای اینکه عکس های شما به بهترین شکل ظاهر شوند.
بهبود تصویر یک ابزار بسیار مهم برای بینایی کامپیوتر و برنامه های ویرایش تصویر است. هدف آن بهبود کیفیت تصاویر است.
با افزایش کیفیت تصویر می توان دقت و قابلیت اطمینان تکنیک های تحلیل و پردازش تصویر را به میزان قابل توجهی افزایش داد. این امر به ویژه در برنامه های کاربردی تشخیص، تشخیص، تقسیم بندی و ردیابی اشیاء مهم است.
هنگامی که عواملی مانند شرایط نور کم، نویز حسگر، تاری حرکت یا خطاهای انتقال کیفیت تصویر را به خطر می اندازند، بهبود تصویر می تواند کمک کند.
تنظیم محیط
با تنظیم یک محیط پایتون شروع کنید، سپس دستور ترمینال زیر را برای نصب کتابخانه OpenCV اجرا کنید. از OpenCV برای بارگیری و پردازش تصویر اولیه و ذخیره تصویر پیشرفته نهایی استفاده خواهید کرد.
pip install opencv-python
برای نمایش دو تصویر از Matplotlib استفاده خواهید کرد. با استفاده از این دستور آن را نصب کنید:
pip install matplotlib
در نهایت، NumPy را نصب کنید، که از آن برای عملیات عددی از جمله ایجاد جداول جستجو برای تصحیح گاما و تعریف کرنل برای وضوح تصویر استفاده خواهید کرد:
pip install numpy
هنگامی که این کتابخانه ها را در محیط خود نصب کردید، آماده شروع کدنویسی هستید.
کد منبع کامل این نسخه آزمایشی در یک مخزن GitHub موجود است.
واردات کتابخانه های مورد نیاز
کتابخانه هایی را که قبلاً در محیط خود نصب کرده اید وارد کنید:
import cv2
import matplotlib.pyplot as plt
import numpy as np
توجه داشته باشید که باید OpenCV را به عنوان cv2 وارد کنید. این یک روش استاندارد است که هدف آن تضمین سازگاری کد و سهولت درک برای سایر توسعه دهندگان است.
بارگیری و نمایش تصویر اصلی
با بارگیری تصویر اصلی با استفاده از تابع cv2.imread شروع کنید. این تصویر ورودی است که برنامه شما تکنیک های بهبود را روی آن انجام می دهد. سپس آن را با استفاده از توابع Matplotlib مناسب نمایش دهید:
image = cv2.imread('example.jpg')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.title('Original Image')
plt.show()
نمایش تصویر اصلی به شما کمک می کند نتایج برنامه را بعداً مقایسه کنید:
تصویر بالا ورودی برنامه خواهد بود.
کاهش نویز در تصویر
حذف نویز تکنیکی است که هدف آن کاهش نویز – اعوجاج های تصادفی – در تصویر است. این منجر به یک خروجی نرم تر می شود. OpenCV تابع fastNlMeansDenoisingColored را برای این منظور فراهم می کند. از یک الگوریتم غیر محلی برای حذف نویز و در عین حال حفظ جزئیات تصویر استفاده می کند.
# Apply image enhancements
# Denoise the image
denoised_image = cv2.fastNlMeansDenoisingColored(image, None, 10, 10, 7, 21)
تابع fastNlMeansDenoisingColored چندین پارامتر از جمله تصویر، قدرت فیلتر، اندازه پنجره قالب و اندازه پنجره جستجو را می گیرد. شما می توانید با مقادیر مختلف آزمایش کنید تا به نتایج دلخواه خود برسید.
کنتراست کششی برای بهبود دید جزئیات
کشش کنتراست به نرمالیزاسیون نیز معروف است. مقادیر شدت را در محدوده خاصی گسترش می دهد. این به نوبه خود باعث بهبود دید جزئیات در تصویر می شود.
میتوانید با استفاده از تابع عادیسازی OpenCV، کشش کنتراست را روی تصویر حذفشده اعمال کنید:
# Perform contrast stretching
contrast_stretched_image = cv2.normalize(denoised_image, None, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)
نحوه تیز کردن تصویر
وضوح تصویر لبه ها و جزئیات تصویر را بهبود می بخشد و به بهبود وضوح تصویر کمک می کند.
# Image Sharpening
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
sharpened_image = cv2.filter2D(contrast_stretched_image, -1, kernel=kernel)
کد بالا یک ماتریس هسته ایجاد می کند که بر لبه ها و جزئیات در تصویر تأکید دارد. تابع cv2.filter2D هسته را بر روی تصویر با کنتراست اعمال می کند و در نتیجه آن را واضح می کند.
روشنایی را برای بهبود نوردهی تنظیم کنید
تنظیم روشنایی، روشنایی کلی یک تصویر را کنترل می کند. این کمک می کند تا تصویر از نظر بصری جذاب و به خوبی در معرض دید قرار گیرد.
# Brightness Adjustment
brightness_image = cv2.convertScaleAbs(sharpened_image, alpha=1, beta=5)
تابع cv2.convertScaleAbs روشنایی تصویر را تنظیم می کند. پارامتر آلفا کنتراست را کنترل می کند، در حالی که پارامتر بتا روشنایی را کنترل می کند. افزایش مقدار بتا باعث افزایش روشنایی تصویر می شود.
برای روشن کردن تصویر، تصحیح گاما را اعمال کنید
پس از تکنیک تنظیم روشنایی، یک تصویر ممکن است خیلی روشن ظاهر شود. تصحیح گاما روشنایی و کنتراست کلی تصویر را تنظیم می کند. تصاویری که خیلی تاریک یا خیلی روشن به نظر می رسند را تصحیح می کند.
# Gamma Correction
gamma = 1.5
lookup_table = np.array([((i / 255.0) ** gamma) * 255 for i in np.arange(0, 256)]).astype("uint8")
gamma_corrected_image = cv2.LUT(brightness_image, lookup_table)
قطعه کد بالا یک جدول جستجو ایجاد می کند که تبدیل تصحیح گاما را در تصویر تنظیم شده با روشنایی اعمال می کند. مقدار گاما تنظیم را کنترل می کند. برای تیره کردن تصویر از مقادیر بزرگتر از 1 و برای روشن تر کردن آن از مقادیر کمتر از 1 استفاده کنید.
ذخیره و نمایش تصویر پیشرفته نهایی
پس از اعمال تکنیک های بهبود بالا، تصویر نهایی پردازش شده را در یک فایل ذخیره کنید.
# Save final image
cv2.imwrite('final_image.jpg', gamma_corrected_image)
سپس خروجی برنامه را با استفاده از Matplotlib نمایش دهید.
# Display the final enhanced image
plt.imshow(cv2.cvtColor(gamma_corrected_image, cv2.COLOR_BGR2RGB))
plt.title('Final Enhanced Image')
plt.show()
تصویر پیشرفته نهایی به شرح زیر است:
آینده بهبود تصویر
آینده بهبود تصویر در حوزه هوش مصنوعی است. الگوریتمهای یادگیری ماشین برای اجرای خودکار تکنیکهای بهبود تصویر روی تصاویر آموزش داده میشوند.
این برنامه ها هر تصویر را به طور مستقل بررسی می کنند، بنابراین مقادیر متفاوتی از تکنیک ها را برای تصاویر مختلف اعمال می کنند.