Привет! Я пытаюсь сфокусировать стек определенного набора изображений. Я использовал Photoshop, чтобы сфокусировать их, но мне интересно, есть ли способ воспроизвести фокусировку изображений в Python, используя тот же метод в Photoshop. Мое понимание метода фотошопа состоит в том, что он создает маску исходных изображений и рассматривает сфокусированные области в каждом изображении для создания окончательного изображения. Я использовал это в качестве справочной статьи: https://www.learnopencv.com/image-alignment-ecc-in-opencv-c-python/ https://github.com/spmallick/learnopencv/blob/master/ImageAlignment/image_alignment.py https://github.com/spmallick/learnopencv/blob/master/ImageAlignment-FeatureBased/align.py
До сих пор я пытался найти гомографии для двух изображений и использовать ORB, чтобы найти ключ. точки и дескрипторы для выравнивания изображения. Исходя из этого, я обертываю изображения для получения окончательного резкого изображения
for i in range(0,len(matches)):
image_1_points[i] = image_1_kp[matches[i].queryIdx].pt
image_2_points[i] = image_2_kp[matches[i].trainIdx].pt
homography, mask = cv2.findHomography(image_1_points, image_2_points, cv2.RANSAC, ransacReprojThreshold=2.0)
print( "Detecting features of base image")
outimages.append(images[0])
image1gray = cv2.cvtColor(images[0],cv2.COLOR_BGR2GRAY)
image_1_kp, image_1_desc = detector.detectAndCompute(image1gray, None)
for i in range(1,len(images)):
print ("Aligning image {}".format(i))
image_i_kp, image_i_desc = detector.detectAndCompute(images[i], None)
bf = cv2.BFMatcher()
# This returns the top two matches for each feature point (list of list)
pairMatches = bf.knnMatch(image_i_desc,image_1_desc, k=2)
rawMatches = []
for m,n in pairMatches:
if m.distance < 0.7*n.distance:
rawMatches.append(m)
sortMatches = sorted(rawMatches, key=lambda x: x.distance)
matches = sortMatches[0:128]
hom = findHomography(image_i_kp, image_1_kp, matches)
newimage = cv2.warpPerspective(images[i], hom, (images[i].shape[1], images[i].shape[0]), flags=cv2.INTER_LINEAR)
outimages.append(newimage)