تنظیم تصویر با homography

  • مدرس: علی بیگدلی
  • تاریخ انتشار: Aug 26, 2020

Homography یا همگرایی چیست؟

دو تصویر از بالای کتاب را که در شکل زیر نشان داده شده را در نظر بگیرید. نقطه قرمز نقطه ی فیزیکی همان دو تصویر است. در اصطلاح دیدگاه کامپیوتری ما به آنها نقاط متناظر می گوییم. چهار نقطه متناظر را در چهار رنگ مختلف نشان می دهد: قرمز، سبز، زرد و نارنجی. یک همبستگی یک تحول (یک ماتریس 3 × 3) است که نقاط در یک تصویر را به نقاط مربوطه در تصویر دیگر نقشه می دهد.

در حال حاضر از آنجا که یک هموگرافی یک ماتریس 3 × 3 است، می توانیم چنین در نظر بگیریم

اجازه دهید اول مجموعه ای از نقاط متناظر - (x1، y1) را در تصویر اول و (x2، y2) در تصویر دوم بررسی کنیم. سپس Homograph H آنها را به روش زیر نشان می دهد

هماهنگی تصویر با استفاده از همراستا

معادله فوق برای ALL مجموعه ای از نقاط متناظر درست است تا زمانی که آنها در یک فضا در دنیای واقعی قرار می گیرند. به عبارت دیگر شما می توانید homography را به اولین تصویر اعمال کنید و کتاب در تصویر اول با کتاب در تصویر دوم هماهنگ می شود.

یک تصویر از یک صفحه 3D را می توان با تصویر دیگری از همان فضا با استفاده از Homography تراز کرد

اما درباره نقاطی که در فضای تصویر وجود ندارد، خوب،  همانطور که می توانید در شکل بالا ببینید آنها نمی توانند با همگرایی هماهنگ شوند. اما صبر کنید، اگر دو تصویر در تصویر وجود داشته باشد، چه اتفاقی می افتد؟ خوب، پس شما دو هماهنگی دارید - یکی برای هر صفحه.

پانوراما: کاربرد همراستا

در بخش قبلی ما متوجه شدیم که اگر یک هموگرافی بین دو تصویر شناخته شده باشد، می توان یک تصویر را به دیگری متبلور کرد. با این حال، یک پیش فرض بزرگ وجود دارد. تصاویر باید حاوی یک فضا باشد، و فقط بخش مسطح درست شده بود. معلوم می شود که اگر شما تصویری از هر صحنه بگیرید و سپس با چرخش دوربین عکس دوم را بگیرید، دو عکس با یک هموگرافی مرتبط هستند! به عبارت دیگر شما می توانید دوربین خود را بر روی سه پایه قرار دهید و عکس بگیرید. بعد، آن را در مورد محور عمودی قرار دهید و تصویر دیگری بگیرید. دو تصویری که شما فقط از یک منظره 3D کاملا خودسرانه گرفته اید، با یک هموگرافی مرتبط است. این دو عکس برخی از مناطق مشترک را که می توانند هم تراز و هموار شوند  را به اشتراک می گذارند.

نحوه محاسبه یک هموگرافی؟

برای محاسبه همگرایی بین دو تصویر، باید حداقل بین 4 نقطه متقابل بین دو تصویر را بدانید. اگر بیش از 4 امتیاز متناظر داشته باشید، حتی بهتر است. OpenCV قویا یک هموگرافی را برآورده می کند که به بهترین وجه مناسب همه موارد مربوطه است. معمولا، این مکاتبات نقطه به طور خودکار با استفاده از ویژگی های مشابه مانند SIFT یا SURF بین تصاویر یافت می شود، اما در این پست ما به سادگی با کلیک به صورتی دستی انجام میدهیم.

# pts_src and pts_dst are numpy arrays of points
# in source and destination images. We need at least 
# 4 corresponding points.
h, status = cv2.findHomography(pts_src, pts_dst)
 
# The calculated homography can be used to warp 
# the source image to destination. Size is the 
# size (width,height) of im_dst
 
im_dst = cv2.warpPerspective(im_src, h, size)

تصاویر در شکل 2 نیز می توانند با استفاده از کد زیر پایتون تولید شوند. کد زیر نشان می دهد که چگونه چهار نقطه متناظر را در دو تصویر گرفته و تصویر را به سمت دیگر متمایل کنید. تصویر قابل آزمایش

import cv2
import numpy as np
 
if __name__ == '__main__' :
 
    # Read source image.
    im_src = cv2.imread('book2.jpg')
    # Four corners of the book in source image
    pts_src = np.array([[141, 131], [480, 159], [493, 630],[64, 601]])
 
 
    # Read destination image.
    im_dst = cv2.imread('book1.jpg')
    # Four corners of the book in destination image.
    pts_dst = np.array([[318, 256],[534, 372],[316, 670],[73, 473]])
 
    # Calculate Homography
    h, status = cv2.findHomography(pts_src, pts_dst)
     
    # Warp source image to destination based on homography
    im_out = cv2.warpPerspective(im_src, h, (im_dst.shape[1],im_dst.shape[0]))
     
    # Display images
    cv2.imshow("Source Image", im_src)
    cv2.imshow("Destination Image", im_dst)
    cv2.imshow("Warped Source Image", im_out)
 
    cv2.waitKey(0)

 

ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
2دیدگاه
  • آریان مینویی
    1 year, 2 months ago

    سلام خسته نباشید این دوره نوشته 10 ساعت ولی از فصل1 به بعد فیلم نداره دیگه . آیای قرار میگیره فیلماش؟؟

    • علی بیگدلی
      1 year, 2 months ago

      این دوره تا زمان تکمیل شدن دوره های دیگه ویدئویی نخواهد داشت چون زمان زیادی می طلبه