تکنیک های بهبود تصویر با استفاده از OpenCV
موسسه پایاپروژه به عنوان متصدی انجام پروژه پایتون وظیفه ی خود می داند که در راستای آموزش نرم افزار پایتون گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی پایتون مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.
هدف از انجام پروژه پایتون در این بخش، بهبود تصویر فرآیند، بهبود کیفیت و ظاهر یک تصویر است. می توان از آن برای تصحیح عیوب یا نقص در یک تصویر یا به سادگی جذابیت بصری تصویر استفاده کرد. تکنیک های بهبود تصویر را می توان در طیف وسیعی از تصاویر، از جمله عکس، اسکن و تصاویر دیجیتال اعمال کرد.
برخی از اهداف رایج بهبود تصویر عبارتند از افزایش کنتراست، وضوح و رنگارنگی. کاهش نویز و تاری؛ و اصلاح اعوجاج و سایر عیوب. تکنیک های بهبود تصویر را می توان به صورت دستی با استفاده از نرم افزار ویرایش تصویر یا به طور خودکار با استفاده از الگوریتم ها و برنامه های کامپیوتری مانند OpenCV اعمال کرد.
در این پروژه پایتون، انواع تکنیک های بهبود تصویر را که می توان با استفاده از OpenCV و Python انجام داد، بررسی خواهیم کرد. OpenCV یک کتابخانه بینایی کامپیوتری قدرتمند و منبع باز است که طیف گسترده ای از پردازش تصویر و الگوریتم های بینایی کامپیوتری را ارائه می دهد. با ترکیب قابلیتهای OpenCV و تطبیق پذیری پایتون، میتوانیم به راحتی انواع تکنیکهای بهبود تصویر را برای بهبود کیفیت و ظاهر تصاویر خود پیادهسازی کنیم.
در بخشهای بعدی، در مورد تکنیکهای مختلف بهبود تصویر و نحوه پیادهسازی آنها با استفاده از OpenCV و Python بحث خواهیم کرد. چندین تکنیک بهبود تصویر وجود دارد که می توانید با OpenCV و Python برای بهبود کیفیت و وضوح تصاویر استفاده کنید. در اینجا چند نمونه هستند:
تنظیم روشنایی و کنتراست
تنظیم روشنایی و کنتراست یک تصویر می تواند به طور قابل توجهی بر جذابیت بصری و اثربخشی آن تأثیر بگذارد. همچنین می تواند به تصحیح عیوب یا ایرادات تصویر کمک کند و دیدن جزئیات را آسان تر کند. یافتن تعادل مناسب روشنایی و کنتراست برای ایجاد یک تصویر جذاب و موثر مهم است.
راه های مختلفی برای تنظیم روشنایی و کنتراست تصویر با استفاده از OpenCV و Python وجود دارد. یکی از روشهای رایج استفاده از تابع ()cv2.addWeighted است که به شما امکان میدهد روشنایی را با افزودن یک مقدار اسکالر به هر پیکسل در تصویر، و کنتراست را با مقیاسگذاری مقادیر پیکسل تنظیم کنید.
در این پروژه پایتون مثالی از نحوه تنظیم روشنایی و کنتراست یک تصویر با استفاده از تابع ()cv2.addWeighted آورده شده است:
Import the necessary libraries#
import cv2
import matplotlib.pyplot as plt
import numpy as np
Load the image#
image = cv2.imread(‘GFG.jpeg’)
Plot the original image#
plt.subplot(1, 2, 1)
plt.title(“Original”)
plt.imshow(image)
Adjust the brightness and contrast#
Adjusts the brightness by adding 10 to each pixel value#
brightness = 10
Adjusts the contrast by scaling the pixel values by 2.3 #
contrast = 2.3
image2 = cv2.addWeighted(image, contrast, np.zeros(image.shape, image.dtype), 0, brightness)
Save the image#
cv2.imwrite(‘modified_image.jpg’, image2)
Plot the contrast image#
plt.subplot(1, 2, 2)
plt.title(“Brightness & contrast”)
plt.imshow(image2)
()plt.show
خروجی:

روشنایی و کنتراست
در انجام پروژه پایتون، روشنایی تصویر با افزودن 10 به هر مقدار پیکسل تنظیم می شود و کنتراست با کوچک کردن مقادیر پیکسل در 2.3 تنظیم می شود. می توانید مقادیر روشنایی و کنتراست را تنظیم کنید تا به سطح روشنایی و کنتراست دلخواه برسید.
روش دیگر برای تنظیم روشنایی و کنتراست یک تصویر، استفاده از تابع ()cv2.convertScaleAbs است که به شما امکان می دهد روشنایی و کنتراست را با استفاده از ترکیبی از تغییر مقیاس و تغییر مقادیر پیکسل تنظیم کنید.
Import the necessary libraries#
import cv2
import matplotlib.pyplot as plt
import numpy as np
# Load the image#
image = cv2.imread(‘GFG.jpeg’)
#Plot the original image#
plt.subplot(1, 2, 1)
plt.title(“Original”)
plt.imshow(image)
Adjust the brightness and contrast#
g(i,j)=α⋅f(i,j)+β#
control Contrast by 1.5 #
alpha = 1.5
control brightness by 50 #
beta = 50
image2 = cv2.convertScaleAbs(image, alpha=alpha, beta=beta)
Save the image#
cv2.imwrite(‘Brightness & contrast.jpg’, image2)
Plot the contrast image#
plt.subplot(1, 2, 2)
plt.title(“Brightness & contrast”)
plt.imshow(image2)
()plt.show
خروجی ها:

روشنایی و کنتراست
در این مثال، روشنایی و کنتراست با استفاده از ترکیبی از مقیاسگذاری و تغییر مقادیر پیکسل تنظیم میشوند. می توانید مقادیر آلفا و بتا را تنظیم کنید تا به سطح روشنایی و کنتراست دلخواه برسید.
تیز کردن تصاویر
شارپنینگ در پروژه های پایتون فرآیندی است که در آن لبهها و جزئیات ظریف در یک تصویر به منظور واضحتر و واضحتر به نظر رسیدن تصویر میشود. این مهم است زیرا می تواند به نشان دادن جزئیات و ویژگی های یک تصویر کمک کند و از نظر بصری جذاب تر و درک آن آسان تر شود. شارپنینگ می تواند برای اصلاح تاری یا نرمی یک تصویر استفاده شود و با استفاده از تکنیک های مختلف می توان از آن استفاده کرد.
یکی از روش های متداول برای شارپ کردن تصاویر با استفاده از OpenCV و Python استفاده از تابع ()cv2.filter2D است که تصویر را با یک هسته درهم می آمیزد. هسته را می توان به گونه ای طراحی کرد که لبه های تصویر را بهبود بخشد و در نتیجه تصویر واضح تری ایجاد کند.
در اینجا مثالی از نحوه شارپ کردن یک تصویر با استفاده از تابع ()cv2.filter2D آورده شده است:
Import the necessary libraries#
import cv2
import matplotlib.pyplot as plt
import numpy as np
Load the image#
image = cv2.imread(‘GFG.jpeg’)
Plot the original image#
plt.subplot(1, 2, 1)
plt.title(“Original”)
plt.imshow(image)
Create the sharpening kernel#
kernel = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]])
Sharpen the image#
sharpened_image = cv2.filter2D(image, -1, kernel)
Save the image#
cv2.imwrite(‘sharpened_image.jpg’, sharpened_image)
Plot the sharpened image#
plt.subplot(1, 2, 2)
plt.title(“Sharpening”)
plt.imshow(sharpened_image)
()plt.show
خروجی :

در این پروژه پایتون از یک هسته شارپنینگ 3×3 برای افزایش لبه های تصویر استفاده شده است. می توانید با هسته های مختلف آزمایش کنید تا به سطح مورد نظر تیز شدن برسید. Numpy برای ایجاد هسته تیز کردن استفاده می شود که به عنوان یک آرایه NumPy با استفاده از تابع np.array () ایجاد می شود. سپس این آرایه بهعنوان آرگومان به تابع ()cv2.filter2D ارسال میشود که تصویر را با هسته در هم میپیچد تا آن را واضح کند.
روش دیگر برای شارپ کردن تصاویر استفاده از تابع ()cv2.Laplacian است که Laplacian یک تصویر را محاسبه می کند و نتیجه را به صورت یک تصویر شارپ شده برمی گرداند.
Import the necessary libraries#
import cv2
import matplotlib.pyplot as plt
import numpy as np
Load the image#
image = cv2.imread(‘GFG.jpeg’)
Plot the original image#
plt.subplot(1, 2, 1)
plt.title(“Original”)
plt.imshow(image)
Sharpen the image using the Laplacian operator#
sharpened_image2 = cv2.Laplacian(image, cv2.CV_64F)
Save the image#
cv2.imwrite(‘Laplacian sharpened_image.jpg’, sharpened_image2)
Plot the sharpened image#
plt.subplot(1, 2, 2)
plt.title(“Laplacian Sharpening”)
plt.imshow(sharpened_image2)
()plt.show
خروجی :

منابع:
https://www.opencvhelp.org/tutorials/image-processing/how-to-sharpen-image
https://www.geeksforgeeks.org/image-enhancement-techniques-using-opencv-python
