Sliding window là gì

Trước lúc bắt đầu bài viết, mình xin nhấn mạnh bài xích này (tut 7) cùng bài bác kế tiếp (tut 8) là 2 quan niệm rất là quan tiền trọng vào xử trí hình họa. Nếu không hiểu biết nhiều được xin đừng tiếp tục phát âm các bài sau nữa, hãy dừng lại với xem thêm cho đến lúc gọi được bọn chúng các bạn nhé!

Môi trường làm việc cùng với OpenCV Linux (bài viết thực hiện Ubuntu 16.04) OpenCV (nội dung bài viết áp dụng OpenCV 3.4.1) Pyeo hẹp (nội dung bài viết thực hiện Pyeo hẹp 3.5.5) Ảnh mẫu để xử lý: img_7.jpg

quý khách hàng hoàn toàn có thể tải về ảnh mẫu về:

img_7.jpg

*

Sliding Window là gì?

Cửa sổ tđuổi (sliding window) là chuyên môn mà ta cần sử dụng 1 hành lang cửa số (window, xuất xắc tên thường gọi khác là kernel) nhằm tđuổi trên từng pixel của ảnh. Tại mỗi pixel trong quy trình tđuổi, ta vận dụng phnghiền chuyển đổi giữa các px bên trên cửa ngõ sổ với những px tương xứng bên trên vùng ảnh.

Bạn đang xem: Sliding window là gì

Note: form size hình ảnh áp ra output sau thời điểm áp dụng chuyên môn hành lang cửa số trượt dựa vào vào:

Window kích thước (kernel size): form size cửa sổ.Padding: số px mở rộng cấp dưỡng hình ảnh đầu vô.Stride: khoảng cách trượt.Dilation: khoảng cách của từng pixel trên cửa sổ.

Lưu ý rằng:

Sau Lúc tính tân oán trên vùng hành lang cửa số, giá trị công dụng được lưu lại vào ma trận (ảnh) kết quả riêng biệt với hình ảnh gốc!Vì khôn xiết nhiều bạn từng đọc nhầm rằng sau thời điểm tính toán thù bên trên mỗi vùng cửa sổ, quý hiếm hiệu quả được gán lại thẳng vào chổ chính giữa của hành lang cửa số ngay bên trên ảnh gốc –> cách làm này là ko đúng cho chuyên môn sliding window.

Xem thêm: Chi Phí Quản Lý Doanh Nghiệp Tiếng Anh Là Gì, Chi Phí Quản Lý Kinh Doanh Tiếng Anh La Gì

Ảnh minch họa sliding window, hình ảnh đầu vô màu xanh dương dưới, hình vuông vắn 3x3 dịch chuyển đó là cửa sổ (window) của họ, hình họa Áp sạc ra có color cyan nghỉ ngơi phía trên. Các ngôi trường vừa lòng phổ biến:

Sliding window kernel_size=3, padding=0, stride=1, dilation=1 tức hành lang cửa số dịch 1 đơn vị chức năng những lần trượt:

*

Sliding window kernel_size=3, padding=1, stride=1, dilation=1, ta padding hình ảnh nhằm kích cỡ hình ảnh kết quả bằng kết thước hình họa gốc!

*

Sliding window kernel_size=3, padding = 0, stride = 2, dilation=1, cửa ngõ số tđuổi 2 1-1 vị:

*

Sliding window kernel_size=3, padding = 1, stride = 2, dilation=1, padding thêm với trượt 2 pixel:

*

Animation của nhiều vẻ bên ngoài sliding window khác: Convolution arithmetic

Kỹ thuật sliding window để gia công gì?

Tác dụng của sliding window hay được dùng:

Biến đổi ảnh: làm cho mờ (blur), trích cạnh, …Trích xuất đặc thù cục bộ (vùng tổng thể chính là vùng hình họa có form size bởi form size hành lang cửa số trượt).…

Kỹ thuật sliding window Mặc dù dễ dàng và đơn giản mà lại mở ra rất là nhiều, thường trông thấy ở các phương thơm pháp:

Phát hiện đối tượng: phạt hiện khuôn khía cạnh, vạc hiện tại tín đồ đi dạo (pedestrian), phạt hiện tại xe pháo (bài toán thù giao thông), phạt hiện biển cả báo giao thông, dấn diện kí từ bỏ, …Nhận diện đối tượng: dấn diện khuôn phương diện, nhấn diện biển khơi số xe, theo vết (tracking), …Đếm đối tượng: trực tiếp hoặc loại gián tiếp.…

Sliding Window hay sử dụng tới mức nó vẫn xuất hiện trong những quy mô mạng học tập sâu (deep learning) vào lĩnh vực thị lực máy tính. Các mạng neuron tích chập sâu (Convolutional Neural Network - CNN) khỏe khoắn đến cả độ đúng mực của chính nó quá trội so với những phương pháp cách xử lý hình hình ảnh truyền thống lịch sử.

Hiện thực chuyên môn sliding window

Chương trình bên dưới demo:

Kỹ thuật sliding window: coi phương thức apply_sliding_window(), phxay biến hóa ở đấy là dot sản phẩm, tức nhân từng điểm của ma trận và tiếp đến tính tổng.Rekích thước hình họa tỉ trọng 50% bằng cách lựa chọn kernel form size 1x1 có duy nhất 1 giá trị bằng 1.Làm sáng và mờ hình ảnh bằng kernel 3x3, mỗi cực hiếm vào kernel là 0.33.Sử dụng numpy: trong quá trình học tập cách xử trí ảnh trên Pynhỏ nhắn, vấn đề thực hiện mang đến thư viện tính toán numpy là vấn đề thế tất. Mình sẽ không giải thích các hàm numpy bản thân dùng, chúng ta tự tra docs của numpy nhằm đọc gọi nhé.

Xem thêm: Lịch Âm Thứ 5 Ngày 21 Tháng 7 Năm 2016 Là Ngày Gì, Lịch Âm Thứ 5 Ngày 21 Tháng 7 Năm 2016

Để giải thích tại sao kernel 3x3 kia có thể làm sáng sủa và mờ ảnh mời các bạn follow trang để tiếp hiểu với hiểu rõ thêm tự những bài xích post sau đó nhé!

Lưu ý rằng do mình từ bỏ hiện thực kỹ thuật sliding window bằng vòng lặp nhằm các chúng ta có thể gọi phương thức sliding window hoạt động, nên việc thời hạn chạy dứt chương trình là hơi lâu, mất cho những giây.


import cv2import numpy as npdef apply_sliding_window(img, kernel, padding=0, stride=1): h, w = img.shape<:2> img_p = np.zeros() img_p = img kernel = np.array(kernel) assert len(kernel.shape) == 2 và kernel.shape<0> == kernel.shape<1> # square kernel assert kernel.shape<0> % 2 != 0 # kernel kích cỡ is odd number k_form size = kernel.shape<0> k_half = int(k_size/2) y_pos = x_pos = new_img = np.zeros() for new_y, y in enumerate(y_pos): for new_x, x in enumerate(x_pos): if k_half == 0: pixel_val = img_p * kernel # element-wise multiply else: pixel_val = np.sum(img_p * kernel) # dot product: https://tienhieptruyenky.com/toan-hoc/y-nghia-tich-vo-huong.html new_img = pixel_val return new_imgdef apply_sliding_window_on_3_channels(img, kernel, padding=0, stride=1): layer_xanh = apply_sliding_window(img<:,:,0>, kernel, padding, stride) layer_green = apply_sliding_window(img<:,:,1>, kernel, padding, stride) layer_red = apply_sliding_window(img<:,:,2>, kernel, padding, stride) new_img = np.zeros(list(layer_blue.shape) + <3>) new_img<:,:,0>, new_img<:,:,1>, new_img<:,:,2> = layer_xanh, layer_green, layer_red return new_imgif __name__ == "__main__": img = cv2.imread("img_7.jpg") new_img = apply_sliding_window_on_3_channels(img, kernel=<<1>>, padding=0, stride=2) cv2.imwrite("img_7_new.jpg", new_img) print("Shape img_7.jpg:", img.shape) print("Shape img_7_new.jpg:", new_img.shape) print("Saved new image
img_7_new.jpg") print("------------") lighten_blur_img = apply_sliding_window_on_3_channels(img, kernel=<<0.33, 0.33, 0.33>, <0.33, 0.33, 0.33>, <0.33, 0.33, 0.33>>, padding=1, stride=1) cv2.imwrite("img_7_lighten_blur.jpg", lighten_blur_img) print("Shape img_7.jpg:", img.shape) print("Shape img_7_lighten_blur.jpg:", lighten_blur_img.shape) print("Saved new image
Ảnh kết quả: