Python-opencv 实现Zernike矩亚像素边缘检测
参考了别人C++ OpenCV的逻辑
原图:
边缘检测效果:
代码如下:
import numpy as np
import cv2
import math
import matplotlib.pyplot as plt
pi = 3.14159265358979323846
g_N = 7
#Zernike 7*7 模板
M00 = np.array([[0, 0.0287, 0.0686, 0.0807, 0.0686, 0.0287, 0],
[0.0287, 0.0815, 0.0816, 0.0816, 0.0816, 0.0815, 0.0287],
[0.0686, 0.0816, 0.0816, 0.0816, 0.0816, 0.0816, 0.0686],
[0.0807, 0.0816, 0.0816, 0.0816, 0.0816, 0.0816, 0.0807],
[0.0686, 0.0816, 0.0816, 0.0816, 0.0816, 0.0816, 0.0686],
[0.0287, 0.0815, 0.0816, 0.0816, 0.0816, 0.0815, 0.0287],
[0, 0.0287, 0.0686, 0.0807, 0.0686, 0.0287, 0]])
M11R = np.array([[0, -0.015, -0.019, 0, 0.019, 0.015, 0],
[-0.0224, -0.0466, -0.0233, 0, 0.0233, 0.0466, 0.0224],
[-0.0573, -0.0466, -0.0233, 0, 0.0233, 0.0466, 0.0573],
[-0.069, -0.0466, -0.0233, 0, 0.0233, 0.0466, 0.069],
[-0.0573, -0.0466, -0.0233, 0, 0.0233, 0.0466, 0.0573],
[-0.0224, -0.0466, -0.0233, 0, 0.0233, 0.0466, 0.0224],
[0, -0.015