Лабораторная_img_2.pdf (182.8 КБ)
вот файл с условием лабораторной
Помогите пожалуйста реализовать пункт Кусочно-линейное преобразование с задаваемыми узловыми точками (r1,s1),(r2,s2) и как в этом пункте двойным циклом перебрать все пикселы изоражения img[]: img[i,j][0] — red, img[i,j] в этой программе
import cv2
import numpy as np
from google.colab import drive
drive.mount("/content/drive")
img=cv2.imread('./drive/MyDrive/python/lab 2/sun.jpg')
#задание 1 логарифмическое преобразование
img[img==255]=254 # делаем такое преобразование, чтобы 0 не попал под логарифм
img2=np.asarray(np.rint(255*np.log(1+img)/np.log(255)),dtype=np.uint8)
cv2.imwrite('./drive/My Drive/python/lab 2/sun_log.jpg',img2)#результат логарифмического преобразования
#задание 2 переход к негативу
img3=np.asarray(np.rint(255-img),dtype=np.uint8)#переход к негативу
cv2.imwrite('./drive/My Drive/python/lab 2/sun_negative.jpg',img3)#результат перехода негатива
#Для различных значений параметра применить степенное преобразование
Y=float(input("enter Y="))
if 0<Y<1:
print("параметр γ →0, то результирующее изображение будет становитьсявсе светлее и светлее")
elif 1<Y<2:
print("При γ>1в области черного цвета будет наблюдаться понижение контрастности, а в области белого цвета – ее увеличение.")
elif Y>1:
print("параметр γ →+∞, то изображения будут темнеть, превращаясь в пределе в черное.")
else:
print("данный случай не рассматривается!")
img4=np.asarray(np.rint(pow(img,Y)/pow(255,Y-1)),dtype=np.uint8)#переход к негативу
cv2.imwrite('./drive/My Drive/python/lab 2/sun_stepen.jpg',img4)
#Кусочно-линейное преобразование с задаваемыми узловыми точками (r1,s1),(r2,s2)
r1=float(input("enter r1="))
r2=float(input("enter r2="))
s1=float(input("enter s1="))
s2=float(input("enter s2="))
for r in range(0,255):#help me here!
if 0<=r<=r1:
s_1=np.asarray(np.rint(s1/r1),dtype=np.uint8)
cv2.imwrite('./drive/My Drive/python/lab 2/s_1.jpg',s_1)