Sift Là Gì – Nghĩa Của Từ Sift

Sift Là Gì – Nghĩa Của Từ Sift

I. SIFT là gì ?

Tiếp nối chuỗi bài viết về những cách trong xử lý ảnh, giờ đây mình xin ra mắt tới chúng ta về cách trích chon đặc trưng SIFT. SIFT (Scale-invariant feature transform) là một feature descriptor đc dùng trong computer vision and xử lý hình ảnh đc sử dụng để nhận dạng đối tượng người dùng, matching image, hay sử dụng cho những bài toán phân loại…

*

4×4 Gradient windowHIstogram of 4×4 samples per window in 8 directionsGaussian weighting around center4x4x8 = 128 dimensional feature vector Tính chất :Những keypoint sẽ ít bị chịu ràng buộc bởi độ mạnh sáng, nhiễu, góc xoay của ảnh do những descriptor đc tạo được từ gradients vì thế nó đã bất biến với những điều chỉnh về độ sáng (ví dụ: thêm 10 vào cục bộ những pixel hình ảnh sẽ đưa về cùng một miêu tả đúng cách).Nhanh and hiệu quả, vận tốc xử lý gần như với thời hạn thực (realtime)Có thể xử lý khi xoay ảnh

II. Cần sử dụng SIFT cho bài toán phân loại

Để khởi tạo đối tượng người dùng SIFT trong OpenCV ta dùng lệnh: sift = cv2.xfeatures2d.SIFT_create()

img = cv2.imread(“path_to_image”) #đọc ảnhimg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # chuyển ảnh sang hệ graysift = cv2.xfeatures2d.SIFT_create() #khởi tạo đối tượng người dùng siftkp, des = sift.detectAndCompute(img,None) #Đối tượng người dùng này có cách detectAndCompute trả về 2 outputs kp and des, kp là một list chứa những keypoints đc detect bởi SIFT, des là một 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 ảnh

*

Cần sử dụng cho bài toán phân loại:

Xem Ngay:  Thạc Sĩ Là Gì - Thạc Sĩ, Tiến Sĩ Là Gì

def read_data(path_to_image): X = #chứa image Y = #chứa label for label in os.listdir(“path_to_image”): for img_file in os.listdir(os.path.join(“path_to_image”, label)): img = load_image(os.path.join(“trainingset”, label, img_file)) X.append(img) Y.append(label2id

Bài Viết: Sift là gì

Xem Ngay: Tmp Tệp tin Là Gì – Tmp Là Tệp tin Gì Phần Mềm & Phương pháp Mở Tệp tin

Trong phạm vi bài viết này thì mình sẽ dùng SIFT

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 đầu vào là một list gồm cục bộ những descriptors của những ảnh trong tập X and số cụm num_clusters, dùng thuật toán KMeans trong scikit-learn phân cụm những vector descriptors này thành num_clusters cụm. Hàm trả về một danh sách center của những cụm. Vì thao tác này mất rất đông thời hạn nên ta sẽ lưu danh sách trả về bởi hàm kmeans_bow() ra một tệp tin 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”))Thành lập hàm create_features_bow() nhận đầu vào là list image_descriptors, list BoW and num_clusters ở trên cao, trả về list X_features, trong đó phần tử thứ p của X_vectors là vector đặc trưng theo quy mô BoW ứng với ảnh thứ p, tập keypoint descriptors thứ p. Hãy để ý sự tương ứng những phần tử trong 4 danh sách: X, Y, image_descriptors, X_features.

Xem Ngay:  Demonstration Là Gì - Nghĩa Của Từ : Demonstration

def create_features_bow(image_descriptors, BoW, num_clusters): X_features = for i in range(len(image_descriptors)): features = np.array( * num_clusters) if image_descriptors is not None: distance = cdist(image_descriptors, BoW) argmin = np.argmin(distance, axis=1) for j in argmin: features += 1 X_features.append(features) return X_featuresX_features = create_features_bow(image_descriptors, BoW, num_clusters)Sau khi có X_feature các bạn sẽ đưa vào những quy mô phân loại là xong. Những bạn cũng có thể tham khảo thêm những quy mô phân loại SVM.

Xem Ngay: Dân Tộc Tiếng Anh Là Gì

Tài liệu tham khảo thêm

Bài viết trên đc mình tổng hợp khi mình tham gia học lớp của thầy Đinh Viết Sang – giảng viên trường Đại học Bách Khoa thành phố Hà Nội and một số tài liệu mình tham khảo thêm bên dưới đây:

Computer Vision: Algorithms và Applications, 2010 by Richard SzeliskThư viện OpenCVCảm ơn chúng ta đã theo dõi bài viết của tôi.

Thể Loại: San sẻ Kiến Thức Cộng Đồng

Bài Viết: Sift Là Gì – Nghĩa Của Từ Sift

Thể Loại: LÀ GÌ

Nguồn Blog là gì: https://hethongbokhoe.com Sift Là Gì – Nghĩa Của Từ Sift

Leave a Reply