CÙNG TIM HIỂU VỀ THUẬT TOÁN SURF TRONG MAGE DESCRIPTOR

CÙNG TIM HIỂU VỀ THUẬT TOÁN SURF TRONG MAGE DESCRIPTOR

Uniduc JSC - 2020-03-27 16:14:56 | 1124 lượt xem

Mục lục

SURF descriptors, được giới thiệu bởi Bay et al. trong bài báo ECCV năm 2006, SURF: Speeded Up Robust Feature, thuật toán này rất giống với SIFT descriptor - nhưng mang hai ưu điểm chính.

    - Ưu điểm đầu tiên là SURF tính toán nhanh hơn SIFT, khiến nó phù hợp hơn cho các ứng dụng real-time.

    - Ưu điểm thứ hai của SURF là nó chỉ bằng một nửa kích thước của SIFT. Hãy nhớ lại bài viết trước rằng SIFT trả về một feature vector là 128-dim - trong khi đó SURF trả về một feature vector là 64-dim.

Cách hoạt động của SURF?

Giống như trong SIFT, bước đầu tiên trong SURF là chọn vùng hình chữ nhật của hình ảnh xung quanh keypoint. Kích thước chính xác của vùng được xác định trong giai đoạn phát hiện keypoint, thường là phương pháp Fast Hessian:

Trong giai đoạn thứ hai của SURF, chúng ta lặp lại từng keypoint được phát hiện và chia vùng keypoint thành 4 x 4 khu vực con, một lần nữa, giống như SIFT:

Tuy nhiên, đây là nơi SIFT và SURF bắt đầu khác nhau. Đối với mỗi khu vực phụ 4 x 4 này, Haar-wavelet được trích xuất tại window có size 5x5.

 

 

 

 

 

 

 

 

 

 

 

 

 

Đối với mỗi window, Haar-wavelet được tính theo cả hai hướng x và y. Chúng ta sẽ gọi các response này lần lượt là dx và dy:

Bây giờ chúng ta đã có dx và dy, chúng ta cân chúng Gaussian-kernel, như trong SIFT. Các điểm ở xa keypoint sẽ đóng góp ít hơn vào feature vector cuối cùng, trong khi các điểm gần trung tâm keypoint sẽ đóng góp nhiều hơn vào feature vector cuối cùng.

Bước cuối cùng trong SURF là tính toán feature vector.

Đối với mỗi tiểu khu vực 4 x 4, chúng ta tính toán:

Ở 2 phần tử đầu tiên trong feature vector, \sum d_{x} và \sum d_{y}, là abstractions của Haar-wavelet. Ở 2 phần tử tiếp theo, \sum |d_{x}| và \sum |d_{y}|, chúng ta lấy giá trị tuyệt đối để mang lại thông tin liên quan đến các dấu hiệu thay đổi cường độ.

Do đó, chúng ta có 4 x 4 = 16 khu vực con, mỗi khu vực trả về một vectơ 4 chiều. Các feature vector với 4-dim sau đó được ghép lại. Do đó, feature vector cuối cùng có chiều 16 x 4 = 64-dim c

Cuối cùng, feature vector 64-dim sẽ được chuẩn hóa bằng L2.

Một lần nữa, feature SURF vừa nhanh hơn so với SIFT, vừa giảm một nửa kích thước của SIFT, do đó làm cho nó phù hợp hơn cho cả các ứng dụng bị hạn chế tài nguyên và thời gian thực.

SURF trong Python

Giống như SIFT và đối với OpenCV 2.4, chúng ta có thể sử dụng hàm cv2.DescriptorExtractor_create để khởi tạo SURF.

Nếu chúng ta sử dụng OpenCV 3+, thì chúng ta chỉ cần sử dụng mô-đun xfeatures2d và gọi SURF_create:

# import the necessary packages
from __future__ import print_function
import argparse
import cv2
import imutils
 
# construct the argument parser and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True, help="Path to the image")
args = vars(ap.parse_args())
 
# load the input image, convert it to grayscale
image = cv2.imread(args["image"])
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
 
# handle if we are using OpenCV 2.4
if imutils.is_cv2():
	# initialize the keypoint detector and local invariant descriptor
	detector = cv2.FeatureDetector_create("SURF")
	extractor = cv2.DescriptorExtractor_create("SURF")
 
	# detect keypoints, and then extract local invariant descriptors
	kps = detector.detect(gray)
	(kps, descs) = extractor.compute(gray, kps)
 
# otherwise, we are using OpenCV 3+
else:
	# initialize the keypoint detector and local invariant descriptor
	detector = cv2.xfeatures2d.SURF_create()
 
	# detect keypoints and extract local invariant descriptors
	(kps, descs) = detector.detectAndCompute(gray, None)
 
# show the shape of the keypoints and local invariant descriptors array
print("[INFO] # of keypoints detected: {}".format(len(kps)))
print("[INFO] feature vector shape: {}".format(descs.shape))

Mời bạn có thể tham gia cộng đồng robotic để đặt câu hỏi cũng như tìm hiểu về robot.

-------------////--------------------------------------------////------------

GIỚI THIỆU ĐẾN BẠN SẢN PHẨM KHẨU TRANG Y TẾ WAKAMONO KHÁNG VI RÚT LÊN ĐẾN 99% BẠN CÓ THỂ MUA SẢN PHẨM Ở DƯỚI ĐÂY:

 

 

 

 

-------------////--------------------------------------------////------------

SÁCH ĐẮC NHÂN TÂM HAY ĐƯỢC NHIỀU BẠN TÌM ĐỌC

 

-------------////--------------------------------------------////------------

HUMANOID ROBOT CỦA CÔNG TY UNIDUC SẢN XUẤT PHÁT TRIỂN.

Đăng kí nhận tin mới



Đánh giá bài viết

0%

0 Tổng người đánh giá
5
0%
4
0%
3
0%
2
0%
1
0%
THÔNG TIN LIÊN HỆ

Công ty Cổ phần Uniduc

Địa Chỉ: 22 Đường Số 54, Phường Thảo Điền, Quận 2

Hotline: 089 6688 629 (Phòng Kinh Doanh / HTKT)

DĐ: 0903 666 014 (Mr Đức)

Email: [email protected]

Website: https://uniduc.com/vi

 
TỔNG QUAN

Công ty Cổ Phần Uniduc chuyên cung cấp các loại robot phục vụ, Agv Robot, hệ thống tự động. Với kinh nghiệm nghiên cứu lâu năm và đội ngũ kỹ sư năng động sáng tạo. Hi vọng Uniduc là điếm đến công nghệ là nơi khách hàng luôn gửi trọn niềm tin. Chúng tôi sẽ luôn luôn phấn đấu cung cấp cho bạn giải pháp, máy móc, dịch vụ tốt nhất.

WEB SITE CÙNG HỆ THỐNG

ĐĂNG KÝ NHẬN TIN

Nhận bản tin thường xuyên để cập nhật giá bán và các chương trình khuyến mãi.


©2018 - 2021 Copyright Uniduc., Jsc. Sitemap