Fixed kernel flip becouse CV2 is retarded

main
Gasper Spagnolo 2022-11-13 18:36:38 +01:00
parent 3a899115a6
commit fc599988c3
1 changed files with 39 additions and 5 deletions

View File

@ -30,7 +30,8 @@ def two_b() -> None:
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))).
"""
sigma = 1
sigmas = [0.5, 1, 2]
for sigma in sigmas:
kernel = uz_image.gaussdx(sigma)
print(kernel)
@ -54,6 +55,11 @@ def two_c() -> None:
gauss = np.array([uz_image.get_gaussian_kernel(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)
# Plot impulse only
@ -64,8 +70,36 @@ def two_c() -> None:
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.T)
axs[0, 1].imshow(g_gt_impulse, cmap='gray')
axs[0, 1].set_title('impulse * G * GT')
axs[1, 0].imshow(g_gt_impulse, cmap='gray')
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()