آموزش پردازش تصویر در پایتون – قسمت چهاردهم
قسمت چهاردهم : تشخیص الگوهای مشابه
در قسمت سیزدهم از مجموعه آموزشی پردازش تصویر در پایتون، در رابطه با تشخیص گوشهها صحبت کردیم و توانستیم گوشههای یک تصویر را مشخص کنیم و همچنین با استفاده از پارامترهایی میتوانستیم قدرت این تشخیص را کم و زیاد کنیم. در این قسمت میخواهیم در رابطه با تشخیص الگوهای مشابه صحبت کنیم و اینکه چگونه یک الگوی که در دو تصویر وجود دارد را مشخص کنیم.
در این قسمت ما علاوه بر کتابخانههای OpenCV و numpy از کتابخانهی matplot نیز استفاده خواهیم کرد.
در ادامه ما برای اینکه الگوهای مشابه را در تصویر تشخیص بدهیم، دو تصویر مشابه هم را انتخاب خواهیم کرد. یکی از تصویرها مرجع خواهد بود و تصویر دیگر باید در تصویر مرجع تشخیص داده شود. پس از اینکه برنامه را اجرا کردیم، مشاهده خواهید کرد که یکی از تصویرها به خوبی در تصویر مرجع تشخیص داده خواهد شد.
برنامه ما به صورت زیر است:
import cv2 import numpy as np import matplotlib.pyplot as plt img_template = cv2.imread('p2.jpg', 0) img = cv2.imread('p1.jpg', 0) orb = cv2.ORB_create() kp1, des1 = orb.detectAndCompute(img_template, None) kp2, des2 = orb.detectAndCompute(img, None) bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck = True) matches = bf.match(des1, des2) matches = sorted(matches, key=lambda x: x.distance) img_out = cv2.drawMatches(img, kp2, img_template, kp1 matches[:10], None, flags=2) plt.imshow(img_out) plt.show()
پس از اینکه برنامهی بالا را اجرا کردیم خروجی زیر به ما نمایش داده میشود:
همانطور که در تصویر بالا مشاهده میکنید بخشهای مشابه دو تصویر با خطوطی رنگی به هم ربط داده شدهاند. چون در این تصویر نوشته وجود داشت به خوبی تشخیص داده شد.