zadanie 2 w osobnym pliku
This commit is contained in:
parent
199c5e3834
commit
6acceb9aa9
35
Lab_5.ipynb
35
Lab_5.ipynb
File diff suppressed because one or more lines are too long
94
zadanie2.py
Normal file
94
zadanie2.py
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import numpy as np
|
||||||
|
img1 = plt.imread("wmi1.jpg")/float(2**8)
|
||||||
|
img2 = plt.imread("wmi2.jpg")/float(2**8)
|
||||||
|
img3 = plt.imread("wmi3.jpg")/float(2**8)
|
||||||
|
|
||||||
|
#plt.imshow(img)
|
||||||
|
#plt.show()
|
||||||
|
|
||||||
|
|
||||||
|
def zad2(img, _diamiter, n):
|
||||||
|
shape = img.shape[:2]
|
||||||
|
|
||||||
|
def draw_cicle(shape,diamiter):
|
||||||
|
assert len(shape) == 2
|
||||||
|
TF = np.zeros(shape,dtype=np.bool)
|
||||||
|
center = np.array(TF.shape)/2.0
|
||||||
|
|
||||||
|
for iy in range(shape[0]):
|
||||||
|
for ix in range(shape[1]):
|
||||||
|
TF[iy,ix] = (iy- center[0])**2 + (ix - center[1])**2 < diamiter **2
|
||||||
|
return(TF)
|
||||||
|
|
||||||
|
|
||||||
|
TFcircleIN = draw_cicle(shape=img.shape[:2],diamiter=_diamiter)
|
||||||
|
TFcircleOUT = ~TFcircleIN
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fft_img = np.zeros_like(img,dtype=complex)
|
||||||
|
for ichannel in range(fft_img.shape[2]):
|
||||||
|
fft_img[:,:,ichannel] = np.fft.fftshift(np.fft.fft2(img[:,:,ichannel]))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def filter_circle(TFcircleIN,fft_img_channel):
|
||||||
|
temp = np.zeros(fft_img_channel.shape[:2],dtype=complex)
|
||||||
|
temp[TFcircleIN] = fft_img_channel[TFcircleIN]
|
||||||
|
return(temp)
|
||||||
|
|
||||||
|
fft_img_filtered_IN = []
|
||||||
|
fft_img_filtered_OUT = []
|
||||||
|
## for each channel, pass filter
|
||||||
|
for ichannel in range(fft_img.shape[2]):
|
||||||
|
fft_img_channel = fft_img[:,:,ichannel]
|
||||||
|
## circle IN
|
||||||
|
temp = filter_circle(TFcircleIN,fft_img_channel)
|
||||||
|
fft_img_filtered_IN.append(temp)
|
||||||
|
## circle OUT
|
||||||
|
temp = filter_circle(TFcircleOUT,fft_img_channel)
|
||||||
|
fft_img_filtered_OUT.append(temp)
|
||||||
|
|
||||||
|
fft_img_filtered_IN = np.array(fft_img_filtered_IN)
|
||||||
|
fft_img_filtered_IN = np.transpose(fft_img_filtered_IN,(1,2,0))
|
||||||
|
fft_img_filtered_OUT = np.array(fft_img_filtered_OUT)
|
||||||
|
fft_img_filtered_OUT = np.transpose(fft_img_filtered_OUT,(1,2,0))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def inv_FFT_all_channel(fft_img):
|
||||||
|
img_reco = []
|
||||||
|
for ichannel in range(fft_img.shape[2]):
|
||||||
|
img_reco.append(np.fft.ifft2(np.fft.ifftshift(fft_img[:,:,ichannel])))
|
||||||
|
img_reco = np.array(img_reco)
|
||||||
|
img_reco = np.transpose(img_reco,(1,2,0))
|
||||||
|
return(img_reco)
|
||||||
|
|
||||||
|
|
||||||
|
img_reco = inv_FFT_all_channel(fft_img)
|
||||||
|
img_reco_filtered_IN = inv_FFT_all_channel(fft_img_filtered_IN)
|
||||||
|
img_reco_filtered_OUT = inv_FFT_all_channel(fft_img_filtered_OUT)
|
||||||
|
|
||||||
|
fig = plt.figure(figsize=(25,18))
|
||||||
|
ax = fig.add_subplot(1,3,1)
|
||||||
|
ax.imshow(np.abs(img_reco))
|
||||||
|
ax.set_title("original image")
|
||||||
|
|
||||||
|
ax = fig.add_subplot(1,3,2)
|
||||||
|
ax.imshow(np.abs(img_reco_filtered_IN))
|
||||||
|
ax.set_title("low pass filter image")
|
||||||
|
|
||||||
|
|
||||||
|
ax = fig.add_subplot(1,3,3)
|
||||||
|
ax.imshow(np.abs(img_reco_filtered_OUT))
|
||||||
|
ax.set_title("high pass filtered image")
|
||||||
|
plt.savefig(f"zdjęcie{n}.jpg")
|
||||||
|
#plt.show()
|
||||||
|
|
||||||
|
zad2(img1, 150, 1)
|
||||||
|
zad2(img2, 120, 2)
|
||||||
|
zad2(img3, 150, 3)
|
||||||
|
|
BIN
zdjęcie1.jpg
Normal file
BIN
zdjęcie1.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 205 KiB |
BIN
zdjęcie2.jpg
Normal file
BIN
zdjęcie2.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 219 KiB |
BIN
zdjęcie3.jpg
Normal file
BIN
zdjęcie3.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 222 KiB |
Loading…
Reference in New Issue
Block a user