feat: dynamic map; refactor code and fix bugs
This commit is contained in:
@@ -28,7 +28,7 @@ class VisionChunk:
|
||||
if self.feature_method == "orb":
|
||||
self._detector = cv2.ORB_create(
|
||||
nfeatures=10000,
|
||||
scaleFactor=1.2,
|
||||
scaleFactor=1.1,
|
||||
nlevels=32,
|
||||
edgeThreshold=31,
|
||||
firstLevel=0,
|
||||
@@ -72,14 +72,24 @@ class VisionChunk:
|
||||
return self._matcher
|
||||
|
||||
def _preprocess(self, img_np: np.ndarray) -> np.ndarray:
|
||||
"""CLAHE предобработка для улучшения контраста"""
|
||||
"""Предобработка для улучшения сопоставления между снимками разного времени"""
|
||||
if len(img_np.shape) == 3:
|
||||
gray = cv2.cvtColor(img_np, cv2.COLOR_RGB2GRAY)
|
||||
else:
|
||||
gray = img_np
|
||||
|
||||
|
||||
# Гауссовское размытие для подавления шума и мелких различий
|
||||
blurred = cv2.GaussianBlur(gray, (5, 5), 1.0)
|
||||
|
||||
# CLAHE для выравнивания контраста между снимками
|
||||
clahe = cv2.createCLAHE(clipLimit=3.0, tileGridSize=(8, 8))
|
||||
return clahe.apply(gray)
|
||||
enhanced = clahe.apply(blurred)
|
||||
|
||||
# Опционально: нормализация гистограммы для устранения различий в освещении
|
||||
normalized = cv2.normalize(enhanced, None, 0, 255, cv2.NORM_MINMAX)
|
||||
|
||||
return normalized
|
||||
|
||||
|
||||
def compute_keypoints(self, force: bool = False) -> Tuple[list[cv2.KeyPoint], Optional[np.ndarray]]:
|
||||
if self.keypoints is not None and self.descriptors is not None and not force:
|
||||
@@ -149,15 +159,6 @@ class VisionChunk:
|
||||
if len(good_matches) < 4:
|
||||
return None, None, None, None, None
|
||||
|
||||
# Центр изображений
|
||||
img1_cv = self.to_cv2_gray()
|
||||
img2_cv = other.to_cv2_gray()
|
||||
h1, w1 = img1_cv.shape
|
||||
h2, w2 = img2_cv.shape
|
||||
cx1, cy1 = w1 // 2, h1 // 2
|
||||
cx2, cy2 = w2 // 2, h2 // 2
|
||||
|
||||
# Отцентрированные координаты (x_rel, y_rel)
|
||||
src_pts = []
|
||||
dst_pts = []
|
||||
|
||||
|
||||
Reference in New Issue
Block a user