zadanie 2 w osobnym pliku
This commit is contained in:
parent
199c5e3834
commit
6acceb9aa9
33
Lab_5.ipynb
33
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