Fixed kernel flip becouse CV2 is retarded
parent
3a899115a6
commit
fc599988c3
|
@ -30,7 +30,8 @@ def two_b() -> None:
|
||||||
kernel by dividing the values such that the sum of absolute values is 1. Effectively,
|
kernel by dividing the values such that the sum of absolute values is 1. Effectively,
|
||||||
you have to divide each value by sum(abs(gx(x))).
|
you have to divide each value by sum(abs(gx(x))).
|
||||||
"""
|
"""
|
||||||
sigma = 1
|
sigmas = [0.5, 1, 2]
|
||||||
|
for sigma in sigmas:
|
||||||
kernel = uz_image.gaussdx(sigma)
|
kernel = uz_image.gaussdx(sigma)
|
||||||
print(kernel)
|
print(kernel)
|
||||||
|
|
||||||
|
@ -54,6 +55,11 @@ def two_c() -> None:
|
||||||
gauss = np.array([uz_image.get_gaussian_kernel(3)])
|
gauss = np.array([uz_image.get_gaussian_kernel(3)])
|
||||||
gaussdx = np.array([uz_image.gaussdx(3)])
|
gaussdx = np.array([uz_image.gaussdx(3)])
|
||||||
|
|
||||||
|
# Becouse CV2 applies the correlation instead of convolution, we need to flip the kernels
|
||||||
|
gauss = np.flip(gauss, axis=1)
|
||||||
|
gaussdx = np.flip(gaussdx, axis=1)
|
||||||
|
|
||||||
|
|
||||||
fig, axs = plt.subplots(2, 3)
|
fig, axs = plt.subplots(2, 3)
|
||||||
|
|
||||||
# Plot impulse only
|
# Plot impulse only
|
||||||
|
@ -64,8 +70,36 @@ def two_c() -> None:
|
||||||
g_gt_impulse = impulse.copy()
|
g_gt_impulse = impulse.copy()
|
||||||
g_gt_impulse = cv2.filter2D(g_gt_impulse, cv2.CV_64F, gauss)
|
g_gt_impulse = cv2.filter2D(g_gt_impulse, cv2.CV_64F, gauss)
|
||||||
g_gt_impulse = cv2.filter2D(g_gt_impulse, cv2.CV_64F, gauss.T)
|
g_gt_impulse = cv2.filter2D(g_gt_impulse, cv2.CV_64F, gauss.T)
|
||||||
axs[0, 1].imshow(g_gt_impulse, cmap='gray')
|
axs[1, 0].imshow(g_gt_impulse, cmap='gray')
|
||||||
axs[0, 1].set_title('impulse * G * GT')
|
axs[1, 0].set_title('impulse * G * GT')
|
||||||
|
|
||||||
|
# Plot impulse after convolution with G and DT
|
||||||
|
g_dt_impulse = impulse.copy()
|
||||||
|
g_dt_impulse = cv2.filter2D(g_dt_impulse, cv2.CV_64F, gauss)
|
||||||
|
g_dt_impulse = cv2.filter2D(g_dt_impulse, cv2.CV_64F, gaussdx.T)
|
||||||
|
axs[0, 1].imshow(g_dt_impulse, cmap='gray')
|
||||||
|
axs[0, 1].set_title('impulse * G * DT')
|
||||||
|
|
||||||
|
# Plot impulse after convolution with D and GT
|
||||||
|
d_gt_impulse = impulse.copy()
|
||||||
|
d_gt_impulse = cv2.filter2D(d_gt_impulse, cv2.CV_64F, gaussdx)
|
||||||
|
d_gt_impulse = cv2.filter2D(d_gt_impulse, cv2.CV_64F, gauss.T)
|
||||||
|
axs[0, 2].imshow(d_gt_impulse, cmap='gray')
|
||||||
|
axs[0, 2].set_title('impulse * D * GT')
|
||||||
|
|
||||||
|
# Plot impulse after convolution with GT and D
|
||||||
|
gt_d_impulse = impulse.copy()
|
||||||
|
gt_d_impulse = cv2.filter2D(gt_d_impulse, cv2.CV_64F, gauss.T)
|
||||||
|
gt_d_impulse = cv2.filter2D(gt_d_impulse, cv2.CV_64F, gaussdx)
|
||||||
|
axs[1, 1].imshow(gt_d_impulse, cmap='gray')
|
||||||
|
axs[1, 1].set_title('impulse * GT * D')
|
||||||
|
|
||||||
|
# Plot impulse after convolution with DT and G
|
||||||
|
dt_g_impulse = impulse.copy()
|
||||||
|
dt_g_impulse = cv2.filter2D(dt_g_impulse, cv2.CV_64F, gaussdx.T)
|
||||||
|
dt_g_impulse = cv2.filter2D(dt_g_impulse, cv2.CV_64F, gauss)
|
||||||
|
axs[1, 2].imshow(dt_g_impulse, cmap='gray')
|
||||||
|
axs[1, 2].set_title('impulse * DT * G')
|
||||||
|
|
||||||
plt.show()
|
plt.show()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue