HOG LÀ GÌ

HOG(histogram of oriented gradients) là một trong những feature descriptor được sử dụng trong computer vision và xử lý hình ảnh, dùng làm detec một đối tượng người dùng. Các khái niệm về HOG được nêu ra từ thời điểm năm 1986 mặc dù cho tới năm 2005 HOG new được áp dụng rộng thoải mái sau khi Navneet Dalal với Bill Triggs công bố đa số bổ sung cập nhật về HOG.Hog giống như nhỏng những biểu đồ dùng edge orientation, scale-invariant feature transform descriptors(nlỗi sift, surf,..), shape contexts nhưnghog được tính tân oán trên một lưới um tùm những cell cùng chuẩn chỉnh hóa sự tương bội nghịch thân các blochồng nhằm nâng cao độ chính xác.Hog được thực hiện chủ yếu nhằm thể hiện làm nên cùng sự lộ diện của một object trong ảnhBài tân oán tính toán thù Hog thường xuyên có 5 bước:

Chuẩn hóa hình hình ảnh trước khi xử lýTính toán gradient theo cả phía x cùng y .Lấy phiếu thai thuộc trọng số trong số cellChuẩn hóa các blockThu thập tất cả các biểu đồ gia dụng độ mạnh gradient kim chỉ nan để tạo thành feature vector sau cuối.

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

1. Chuẩn hóa hình hình họa trước lúc xử lý

Bước chuẩn chỉnh hóa này hoàn toàn ko nên, tuy vậy trong một số trường đúng theo, bước này có thể nâng cấp công suất của cục bộc lộ HOG. Có cha phương pháp chuẩn chỉnh hóa chính mà lại bạn cũng có thể xem xét:

Quy định về chuẩn chỉnh Gamma /power : Trong ngôi trường phù hợp này, ta rước $ log(p) $ của từng px p vào hình hình ảnh nguồn vào.Chuẩn hoá gốc-vuông: Ở đây bọn họ mang $ sqrt(p) $ của từng pixel p vào hình hình họa đầu vào. Theo có mang, sự bình thường của những căn bậc nhị nén các độ mạnh điểm hình ảnh nguồn vào rẻ hơn các đối với chuẩn chỉnh bình thường của gamma.Variance normalization: Ở đây, chúng ta tính đề xuất cực hiếm cường độ điểm hình họa mức độ vừa phải $mu $ với độ lệch tiêu chuẩn chỉnh $sigma $ của hình ảnh đầu vào. Với từng điểm hình ảnh ta trừ đi quý giá trung bình của cường độ điểm hình họa và sau đó được chuẩn chỉnh hóa bằng cách phân tách mang đến độ lệch chuẩn: $ p" = (p - mu) / sigma $

2.Tính toán gradient

Để mang được hình ảnh gradient, chúng ta vẫn thực hiện tích chập(convolution): $ G_x = I star D_x$ cùng $G_y = I star D_y $ cùng với I là hình hình ảnh nguồn vào, $ D_x $ làà cỗ thanh lọc đến chiều x, cùng $ D_y $ là cỗ thanh lọc mang lại chiều y .Sau lúc bao gồm các hình ảnh gradient, chúng ta cũng có thể tính tân oán độ mạnh gradient của hình ảnh:∣G∣=Gx2+Gy2|G| = sqrtG_x^2 + G_y^2∣G∣=Gx2​+Gy2​​Cuối thuộc, định hướng của gradient cho từng px trong hình hình ảnh ban sơ được xem bằng cách:θ=arctan2(Gy,Gx) heta = arctan2(G_y, G_x)θ=arctan2(Gy​,Gx​)Dự vào $|G|4 Và θ hetaθ, bạn cũng có thể tính được một biểu trang bị độ mạnh gradient, trong số đó cột của histogram dựa vào θ hetaθ với trọng số của từng cột của biểu đồ vật được dựa trên ∣G∣|G|∣G∣.

*

3.Lấy votes trong những cell

Bây giờ đồng hồ bọn họ đề nghị chia hình hình họa của bọn họ thành các cell và blockMột cell là 1 trong những vùng hình chữ nhật được xác định vì số điểm ảnh thuộc từng cell. Ví dụ: nếu như ta gồm một hình ảnh 128 x 128 với pixel_per_cell = 4 x 4 thì sẽ sở hữu được 32 x 32 = 1024 cell, pixel_per_cell = 32 x 32, sẽ sở hữu được 4 x 4 = 16 cell.Với mỗi cell vào bức ảnh, ta phải tạo ra 1 biểu đồ vật cường độ gradient.

Xem thêm: Hướng Dẫn Cách Chăm Sóc Hoa Ly Trong Chậu Nở Đúng Muốn Dịp Tết

Mỗi pixcel sẽ tiến hành vote vào vào biểu đồ dùng, trọng số của mỗi vote đó là độ mạnh gradient trên px đóCuối cùng, mỗi px góp phần một phiếu thai gồm trọng số vào biểu thứ - trọng lượng của phiếu chỉ dễ dàng là cường độ gradient |G| trên px kia.Hiện giờ, bạn có thể thu thập với ghép các biểu vật dụng này để tạo nên feature vector cuối cùng. Tuy nhiên, ta đã chuẩn chỉnh hóa những bloông xã để sở hữu được công dụng giỏi hơn
*

4.Chuẩn hóa các block

Một đợt tiếp nhữa, ta buộc phải phân tách những blochồng giống hệt như chia cell ngơi nghỉ phía bên trên. Đơn vị của ta không còn là các điểm ảnh nữa nhưng là những cell. Người ta thường xuyên thực hiện hoặc 2 x 2 hoặc 3 x 3 cell_per_bloông chồng giành được độ đúng chuẩn hợp lý trong phần lớn những ngôi trường hòa hợp.Các bloông xã này sẽ chồng lên nhau. Ví du: ta tất cả 3x3 cells cùng cell_per_block= 2x2 thì ta sẽ có được 4 bloông chồng. Tiếp mang đến, ta đã thực hiện thu thập với ghxay những histogram của cell trong bloông xã.

5. Sử dụng trong bài toán object recognition

HOG được implement trong opencv cùng scikit-image. Tuy nhiên, việc sử dụng HOG trong scikit-image linch hoạt rộng không hề ít vào opencvBài toán thù bản thân đưa ra là, trong một tấm hình có khá nhiều chữ số bao gồm kích cỡ khác biệt, làm cho vậy làm sao nhằm xác định được các chữ số đóĐầu chi phí, bản thân sử dụng opencv2 để load hình ảnh, reform size và gửi hình ảnh quý phái color graysacle

image = cv2.imread(image_path) image_gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) ret, thresh = cv2.threshold(image_gray,127,255,0) Sau kia kéo ra những hình chữ nhật viền bao bọc những ký kết tự

kernel = np.ones((5,5),np.uint8) thresh = cv2.erode(thresh,kernel,iterations = 1) thresh = cv2.dilate(thresh,kernel,iterations = 1) thresh = cv2.erode(thresh,kernel,iterations = 1) contours,hierarchy = cv2.findContours(thresh,cv2.RETR_CCOMP.,cv2.CHAIN_APPROX_SIMPLE) digit_rects = rects_final = digit_rects<:> for r in digit_rects: x,y,w,h = r if w Ta vẫn tìm kiếm hog feature bên trên từng mảng điểm hình họa của lý từ được rước ra

hog_featuresData = <> for img in pixel_array: fd = hog(img, orientations=9, pixels_per_cell=(10,10),cells_per_block=(1,1), visualise=False) hog_featuresData.append(fd) hog_features = np.array(hog_featuresData, "float64") return np.float32(hog_features)Cuối thuộc ta tạo một Mã Sản Phẩm KNN

class KNN_MODEL(): def __init__(self, k = 3): self.k = k self.mã sản phẩm = cv2.KNearest() def train(self, samples, responses): self.Model = cv2.KNearest() self.Model.train(samples, responses) def predict(self, samples): retval, results, neigh_resp, dists = self.Model.find_nearest(samples, self.k) return results.ravel()Sử dụng hog feature này có tác dụng đầu vào mang lại Model KNN đã được tranning, mình chiếm được tác dụng nlỗi sau:

*