This commit is contained in:
xixu-me committed 2024-09-25 15:33:34 +08:00
1 parent 6abe2b069c
commit 8bcef951e3
3 files changed
+89

No files matched your search

+23
View File
@@ -0,0 +1,23 @@
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
image = cv.imread("images/lena.png")
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
gray = np.float32(gray)
block_size = 2
sobel_size = 3
k = 0.04
corners_img = cv.cornerHarris(gray, block_size, sobel_size, k) # type: ignore
indices = np.argsort(corners_img.flatten())[::-1][:50]
coords = np.column_stack(np.unravel_index(indices, corners_img.shape))
for coord in coords:
cv.circle(image, (coord[1], coord[0]), 3, (255, 0, 0), 1)
plt.imshow(image)
plt.axis("off")
plt.tight_layout()
plt.show()
+23
View File
@@ -0,0 +1,23 @@
import cv2 as cv
import numpy as np
img = cv.imread("images/lena.png")
cv.imshow("raw_img", img)
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
gray = np.float32(gray)
J = (0.05, 0.01, 0.005)
for j in J:
dst = cv.cornerHarris(gray, 2, 3, 0.04) # type: ignore
a = dst > j * dst.max()
for r in range(a.shape[0]):
for c in range(a.shape[1]):
if a[r, c] != 0:
cv.circle(img, (c, r), 1, (0, 0, 255), 1)
cv.imshow("corners_" + str(j), img)
cv.waitKey(0)
cv.waitKey(0)
cv.destroyAllWindows()
+43
View File
@@ -0,0 +1,43 @@
import cv2 as cv
def build_gaussian_pyramid(image, octaves, scales):
gaussian_pyramid = []
for o in range(octaves):
octave_images = []
for s in range(scales):
if s == 0:
if o == 0:
octave_images.append(image)
else:
octave_images.append(cv.pyrDown(gaussian_pyramid[o - 1][-3]))
else:
sigma = 1.6 * (2 ** (s / scales))
blurred = cv.GaussianBlur(octave_images[0], (5, 5), sigma)
octave_images.append(blurred)
gaussian_pyramid.append(octave_images)
return gaussian_pyramid
def build_dog_pyramid(gaussian_pyramid):
dog_pyramid = []
for octave in gaussian_pyramid:
dog_images = []
for s in range(len(octave) - 1):
dog_images.append(octave[s + 1] - octave[s])
dog_pyramid.append(dog_images)
return dog_pyramid
image = cv.imread("images/lena.jpg", cv.IMREAD_GRAYSCALE)
guassian_pyramid = build_gaussian_pyramid(image, octaves=4, scales=5)
dog_pyramid = build_dog_pyramid(guassian_pyramid)
for i in range(len(dog_pyramid)):
for j in range(len(dog_pyramid[i])):
cv.namedWindow("DoG pyramid image %d %d" % (i, j))
cv.imshow("DoG pyramid image %d %d" % (i, j), dog_pyramid[i][j])
cv.waitKey(0)
cv.destroyAllWindows()