Untitled
unknown
plain_text
2 years ago
4.4 kB
4
Indexable
''' img = Image.open('plain.tif') cropped = img.crop((300, 0, 1324, 1024)) cropped.save('cropped_plain.tif') # 1 вариант - 1 задание - Шум Рэлея" cropped_array = np.array(cropped.getdata()).reshape(cropped.size[0], cropped.size[1]) print(cropped_array.shape) noise = scipy.stats.rayleigh.rvs(scale = 100, size = cropped_array.shape) noisy_image = noise + cropped plt.imshow(noisy_image, cmap = 'gray') plt.imsave('шум Рэлея.png', noisy_image, cmap = 'gray') plt.hist(noisy_image, density=True, bins='auto', histtype='stepfilled', alpha=0.2) plt.show() # 2 задание - Импульсный шум типа перец def add_noise(im): row, col = im.shape number_of_pixels = random.randint(1024, 1024*1024) for i in range(number_of_pixels): y_coord=random.randint(0, row - 1) x_coord=random.randint(0, col - 1) im[y_coord][x_coord] = 0 return im im = add_noise(np.array(img)) image1 = Image.fromarray(im) plt.imsave('шум перец.png', image1, cmap = 'gray') image1.show() plt.hist(im.ravel(), bins=256, range=(0, 255)) plt.show() # 3 задание - фильтр максимума from PIL import ImageFilter IM2 = image1.filter(ImageFilter.MaxFilter(size=3)) plt.imsave('фильтр максимума.png', IM2, cmap = 'gray') IM2.show() #построим разность изображений raznost =Image.fromarray(np.array(img)-np.array(IM2)) plt.imsave('разность изображений.png', raznost, cmap = 'gray') raznost.show() # 4 задание def calculate_2dft(input): ft = np.fft.ifftshift(input) ft = np.fft.fft2(ft) return np.fft.fftshift(ft) def calculate_2dift(input): ift = np.fft.ifftshift(input) ift = np.fft.ifft2(ift) ift = np.fft.fftshift(ift) return ift.real image_1_core = plt.imread("plain.tif") core_image = image_1_core.copy() image_2 = pn.read_excel('im1.xlsx', sheet_name='Sheet1') image_1 = image_2.copy() image = image_1.to_numpy() print(image.shape) ft_image = calculate_2dft(image) plt.imshow(np.log(1 + np.abs(ft_image))) #plt.show() l, m = ft_image.shape for i in range(l): for j in range(m): if (i - 705)**2 + (j - 800)**2 <= 400 or (i - 495)**2 + (j - 800)**2 <= 400: ft_image[i][j] = np.complex128(0) plt.imshow(np.log(1 + np.abs(ft_image))) new_image = calculate_2dift(ft_image) #plt.imshow(new_image, cmap='gray') #plt.imshow(abs(image_2 - new_image), cmap = 'gray') plt.hist(image, density=True, bins='auto', histtype='stepfilled', alpha=0.2) plt.show() ''' # ЛАБА 2 ''' # ЗАДАНИЕ 1 (ПАЛИТРА) rgb_image = cv2.imread('Palitra.png') # переход от RGB к HSI hsi_image = cv2.cvtColor(rgb_image, cv2.COLOR_RGB2HSV) cv2.imshow("Original Image", rgb_image) cv2.imshow("HSV Image", hsi_image) cv2.waitKey(0) cv2.destroyAllWindows() #В области цветового тона изменить красную и зелёную область на максимальное значение цветовой области for i in range(rgb_image.shape[0]): for j in range(rgb_image.shape[1]): if np.all((rgb_image[i][j] == [0, 0, 255])) or np.all((rgb_image[i][j] == [0, 255, 0])): hsi_image[i][j][0] = 255 cv2.imshow("red/green", hsi_image) cv2.waitKey(0) cv2.destroyAllWindows() #Насыщенность пурпурной области уменьшить вдвое по сравнению с первоначальным значением for i in range(rgb_image.shape[0]): for j in range(rgb_image.shape[0]): if np.all(rgb_image[i][j] == [255, 0, 255]): hsi_image[i][j][1] /= 2 cv2.imshow("purpur", hsi_image) cv2.waitKey(0) cv2.destroyAllWindows() #Интенсивность в белой области в центре уменьшить вдвое for i in range(rgb_image.shape[0]): for j in range(rgb_image.shape[0]): if np.all(rgb_image[i][j] == [255, 255, 255]): hsi_image[i][j][2] /= 2 cv2.imshow("saturation of white in the center /2", hsi_image) cv2.waitKey(0) cv2.destroyAllWindows() #Осуществить обратный переход res_image = cv2.cvtColor(hsi_image, cv2.COLOR_HSV2RGB) cv2.imshow("back_to_original", res_image) cv2.waitKey(0) cv2.destroyAllWindows() '''
Editor is loading...
Leave a Comment