Почистването на изображения е ценна техника, независимо дали е за допълнителен анализ или просто за да направите вашите снимки да изглеждат по най-добрия начин.

Подобрението на изображението е ключов инструмент за компютърно зрение и приложения за редактиране на изображения. Има за цел да подобри качеството на изображенията.

Чрез подобряване на качеството на изображението, точността и надеждността на техниките за анализ и обработка на изображения могат да бъдат значително подобрени. Това е особено важно при приложения за откриване, разпознаване, сегментиране и проследяване на обекти.

Подобрението на изображението може да помогне, когато фактори като условия на слаба осветеност, шум от сензора, замъгляване на движението или грешки при предаване са компрометирали качеството на изображението.

Настройване на вашата среда

Започнете от настройка на Python среда, след това изпълнете следната терминална команда, за да инсталирате библиотеката OpenCV. Ще използвате OpenCV за зареждане и обработка на първоначалното изображение и за запазване на крайното подобрено изображение.

instagram viewer
pip инсталирайте opencv-python

Ще използвате Matplotlib, за да покажете двете изображения. Инсталирайте го с тази команда:

pip инсталирайте matplotlib

И накрая, инсталирайте NumPy, което ще направите използване за числени операции включително създаване на справочни таблици за гама корекция и дефиниране на ядрото за изостряне на изображението:

pip инсталирайте numpy

След като инсталирате тези библиотеки във вашата среда, вие сте готови да започнете да кодирате.

Пълният изходен код за тази демонстрация е достъпен в a GitHub хранилище.

Импортиране на необходимите библиотеки

Импортирайте библиотеките, които преди сте инсталирали във вашата среда:

импортиране cv2
импортиране matplotlib.pyplot като плт
импортиране numpy като np

Имайте предвид, че трябва да импортирате OpenCV като cv2. Това е стандартна практика, която има за цел да осигури съвместимост на кода и лесно разбиране за други разработчици.

Зареждане и показване на оригиналното изображение

Започнете, като заредите оригиналното изображение с помощта на cv2.imread функция. Това е входното изображение, върху което вашата програма ще изпълнява техники за подобряване. След това го покажете с помощта на подходящите функции на Matplotlib:

изображение = cv2.imread('example.jpg')
plt.imshow (cv2.cvtColor (изображение, cv2.COLOR_BGR2RGB))
plt.title(„Оригинално изображение“)
plt.show()

Показването на оригиналното изображение ще ви помогне да сравните резултатите от програмата по-късно:

Горното изображение ще бъде входът на програмата.

Намаляване на шума в изображението

Обезшумяването е техника, която има за цел да намали шума - случайни изкривявания - в изображението. Това води до по-плавен изход. OpenCV предоставя fastNlMeansDenoisingColored функция за тази цел. Той използва алгоритъм с нелокални средства за премахване на шума, като същевременно запазва детайлите на изображението.

# Приложете подобрения на изображението
# Демонизирайте изображението
denoised_image = cv2.fastNlMeansDenoisingColored (изображение, Нито един, 10, 10, 7, 21)

The fastNlMeansDenoisingColored функцията приема няколко параметъра, включително изображението, силата на филтъра, размера на прозореца на шаблона и размера на прозореца за търсене. Можете да експериментирате с различни стойности, за да получите желаните резултати.

Разтягане на контраста за подобряване на видимостта на детайлите

Разтягането на контраста е известно още като нормализиране. Той разширява стойностите на интензитета, за да обхване определен диапазон. Това от своя страна подобрява видимостта на детайлите в изображението.

Можете да приложите контрастно разтягане към обезшуменото изображение с помощта на OpenCV нормализирам функция:

# Извършете контрастно разтягане
контрастно_разтегнато_изображение = cv2.normalize (денозирано_изображение, Нито един, 255, 0, cv2.NORM_MINMAX, cv2.CV_8UC1)

Как да изострите изображението

Изострянето на изображението подобрява ръбовете и детайлите на изображението, като помага за подобряване на отчетливостта на изображението.

# Изостряне на изображението
ядро = np.array([[0, -1, 0], [-1, 5, -1], [0, -1, 0]], np.float32)
изострено_изображение = cv2.filter2D(контрастно_опънато_изображение, -1, ядро=ядро)

Горният код създава матрица на ядрото, която подчертава ръбовете и детайлите в изображението. The cv2.filter2D функцията прилага ядрото към разтегнатото с контраст изображение, като в резултат го изостря.

Регулирайте яркостта, за да подобрите експозицията

Регулирането на яркостта контролира общата яркост на изображението. Помага да направите изображението визуално привлекателно и добре експонирано.

# Регулиране на яркостта
яркост_изображение = cv2.convertScaleAbs (изострено_изображение, алфа=1, бета=5)

The cv2.convertScaleAbs функция регулира яркостта на изображението. The алфа параметърът контролира контраста, докато бета параметърът контролира яркостта. Увеличаването на бета стойност подобрява яркостта на изображението.

Приложете гама корекция, за да осветите изображението

Изображението може да изглежда твърде ярко след техниката за регулиране на яркостта. Гама корекцията регулира цялостната яркост и контраст на изображението. Той коригира изображения, които изглеждат твърде тъмни или твърде ярки.

# Гама корекция
гама = 1.5
lookup_table = np.array([((i / 255.0) ** гама) * 255за аз в np.arange(0, 256)]).astype("uint8")
gamma_corrected_image = cv2.LUT(изображение_яркост, справочна_таблица)

Горният кодов фрагмент създава справочна таблица, която прилага трансформация на гама корекция към изображението с коригирана яркост. The гама стойността контролира корекцията. Използвайте стойности, по-големи от 1, за да направите изображението по-тъмно, и стойности, по-малки от 1, за да го направите по-ярко.

Запазване и показване на финалното подобрено изображение

След като приложите горните техники за подобряване, запазете окончателно обработеното изображение във файл.

# Запазете крайното изображение
cv2.imwrite('final_image.jpg', gamma_corrected_image)

След това покажете изхода на програмата с помощта на Matplotlib.

# Показване на крайното подобрено изображение
plt.imshow (cv2.cvtColor (gamma_corrected_image, cv2.COLOR_BGR2RGB))
plt.title(„Окончателно подобрено изображение“)
plt.show()

Окончателното подобрено изображение е както следва:

Бъдещето на подобряването на изображението

Бъдещето на подобряването на изображението е в областта на изкуствения интелект. Алгоритмите за машинно обучение се обучават да изпълняват автоматично техники за подобряване на изображения върху изображения.

Тези програми обработват всяко изображение независимо, така че прилагат различни стойности на техниките за различни изображения.