img=img1+img2# додавання зображень
img=img1-img1#віднімання зображень
img= c*img # множення зображення на число с
img=img+c # додавання числа с до зображення
img=img-c # додавання від зображення числа с
В результаті додавання двох зображень вони накладаються одне на одне.
Операція віднімання застосовується коли потрібно знайти відмінності між візуально схожими зображеннями.
Операція множення на число збільшує контрастність зображення, а операція додавання числа збільшує яскравість кожного пікселя не змінюючи контрастності зображення.
Всі операції виконуються за модулем 256, тому, у випадку коли значення пікселя виходить за межі діапазону $[0,255]$, можливе спотворення зображення. Наприклад
img[100,100]=255
img=img+2
print(img[100,100])
1 # 255+2%256=1
img=img-3
print(img[100,100])
254#(1-3)%256=254
В бібліотеці OpenCV функції cv2.add() i cv2.subtract() реалізують інший алгоритм додавання зображень, при якому у випадку виходу значення пікселя за межі, встановлюють його значення рівним 0 або 255.
image[100,100]=255
image=cv2.add(image,2)# OpenCV додавання
print(image[100,100])
255
cv2.subtract(image,300)# OpenCV віднімання
print(image[100,100])
0
Змішування (blending) двох зображень, тобто їхня зважена сума
$$
{\tt img=\alpha \cdot img1+\beta \cdot img2+\gamma }
$$ виконується функцією cv2.addWeighted, приклад використання
cv2.addWeighted(cv2.addWeighted(img1,0.7,img2,0.3,0)
При застосуванні функцій потрібно стежити чи не змінився тип елементів масиву, а також, чи їхні значення не вийшли за допустимі межі, інакше при спробі відобразити зображення виникне повідомлення про помилку. Рекомендується виконувати обрізання діапазону функцією np.clip та приводити масив до цілого типу:
img=np.clip(img**3,0,255).astype(np.uint8)# куб зображення
Немає коментарів:
Дописати коментар