I.

Bạn đang xem: Sift là gì

SIFT là gì ?

Tiếp nối chuỗi bài viết về những phương thức vào cách xử lý ảnh, bây giờ bản thân xin giới thiệu cho tới các bạn về phương thức trích chon đặc thù SIFT. SIFT (Scale-invariant feature transform) là một trong feature descriptor được thực hiện vào computer vision với cách xử lý hình hình họa được dùng để nhấn dạng đối tượng người tiêu dùng, matching image, xuất xắc vận dụng cho những bài xích toán phân loại…

Đang xem: Sift là gì

*

4×4 Gradient windowHIstogram of 4×4 samples per window in 8 directionsGaussian weighting around center4x4x8 = 128 dimensional feature vector Điểm lưu ý :Các keypoint đang không nhiều bị nhờ vào do cường độ sáng, nhiễu, góc luân phiên của ảnh vày các descriptor được tạo thành từ bỏ gradients vì vậy nó đã không thay đổi cùng với các biến hóa về khả năng chiếu sáng (ví dụ: thêm 10 vào toàn bộ các pixel hình hình họa đã mang đến và một bộc lộ bao gồm xác).Nhanh khô và tác dụng, vận tốc xử lý gần như với thời hạn thực (realtime)cũng có thể cách xử trí lúc chuyển phiên ảnh

II.

Xem thêm: Diễn Viên Nhã Phương Cao Mét Bao Nhiêu ? Diễn Viên Nhã Phương Là Ai

Áp dụng SIFT mang đến bài toán thù phân loại

Để khởi chế tạo đối tượng người dùng SIFT vào OpenCV ta sử dụng lệnh: sift = cv2.xfeatures2d.SIFT_create()

img = cv2.imread(“path_to_image”) #gọi ảnhimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # chuyển hình ảnh thanh lịch hệ graysift = cv2.xfeatures2d.SIFT_create() #khởi sản xuất đối tượng người tiêu dùng siftkp, des = sift.detectAndCompute(img,None) #Đối tượng này còn có phương thức detectAndCompute trả về 2 outputs kp và des, kp là một trong list cất các keypoints được detect vị SIFT, des là 1 trong những numpy array chứa len(kp) vectors 128 chiều.print(des.shape) img=cv2.drawKeypoints(gray,kp,img)cv2.imwrite(“path_to_image”,img) #lưu giữ ảnh

*

Áp dụng đến bài toán phân loại:

def extract_sift_features(X): image_descriptors = sift = cv2.xfeatures2d.SIFT_create() for i in range(len(X)): _, des = sift.detectAndCompute(X, None) image_descriptors.append(des) return image_descriptors Hàm kmeans_bow() nhận nguồn vào là một danh sách bao gồm tất cả những descriptors của các hình họa vào tập X cùng số cụm num_clusters, thực hiện thuật toán thù KMeans vào scikit-learn phân các các vector descriptors này thành num_clusters cụm. Hàm trả về một danh sách center của các các. Vì thao tác làm việc này mất rất nhiều thời gian nên ta đã lưu giữ list trả về bởi vì hàm kmeans_bow() ra một file nhị phân.import timedef kmeans_bow(image_descriptors, num_clusters): strar = time.time() bow_dict = kmeans = KMeans(n_clusters=num_clusters, n_jobs = -1, verbose = 1).fit(all_descriptors) bow_dict = kmeans.cluster_centers_ print(“process time: “, time.time() – start) return bow_dictnum_clusters = 50if not os.path.isfile(“bow_dictionary.pkl”): BoW = kmeans_bow(all_descriptors, num_clusters) pickle.dump(BoW, open(“bow_dictionary.pkl”, “wb”))else: BoW = pickle.load(open(“bow_dictionary.pkl”, “rb”))Xây dựng hàm create_features_bow() nhận đầu vào là các mục image_descriptors, menu BoW và num_clusters nghỉ ngơi trên, trả về danh mục X_features, trong những số ấy bộ phận vật dụng p của X_vectors là vector đặc thù theo mô hình BoW ứng với hình ảnh sản phẩm công nghệ p, tập keypoint descriptors sản phẩm p. Hãy để ý sự khớp ứng những phần tử trong 4 danh sách: X, Y, image_descriptors, X_features.

Tài liệu tđam mê khảo

Bài viết bên trên được mình tổng phù hợp Lúc bản thân tham mê gia học tập lớp của thầy Đinch Viết Sang – giảng viên trường Đại học Bách Khoa Hà Thành và một số trong những tài liệu mình tìm hiểu thêm bên dưới đây:

Computer Vision: Algorithms and Applications, 2010 by Richard SzeliskTlỗi viện OpenCVCảm ơn chúng ta sẽ theo dõi và quan sát nội dung bài viết của chính bản thân mình.Chuim mục: Blogs

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *