01/10/2018, 15:27

Padding ảnh gốc trước khi nhân chập trong Opencv

Hello
2 công thức nhân chập đều gây ra hiện tượng cỡ ảnh sau khi nhân chập bé hơn ảnh gốc, tùy thuộc vào cỡ của kernel. Để xử lý vấn đề này người ta thường bỏ qua các điểm nằm gần rìa, không thực hiện được phép lấy cửa sổ. Hoặc mở rộng ảnh gốc gán các pixel mở rộng = 0 hoặc lặp các cột, hàng ở rìa.
Mình thấy trong opencv có nhiều kiểu, trong đó có kiểu BORDER_CONSTANT là mở rộng và gán các pixel mở rộng = 0
Mình tự code lại hàm nhân chập cũng gán các pixel mở rộng = 0 nhưng kết quả lại khác
Ảnh gốc

Kernel

Anchor(0,0)

Kết quả của mình

Phân màu đỏ là phần kêt quả giống với opencv, phần ngoài là kết quả của phần pixel mở rộng
Kết quả của opencv

Mình đã tính tay lại, nếu gán các pixel mở rộng = 0 thì kết quả phải như của mình
Tại trang chủ opencv có nói
BORDER_CONSTANT: Pad the image with a constant value (i.e. black or 0

https://docs.opencv.org/3.0-rc1/dc/da3/tutorial_copyMakeBorder.html

Nhưng mình thấy họ padding pixel, các pixel này hình như k phải bằng 0
Công thức của mình và opencv áp dụng trong trường hợp này là công thức +. Kết quả nằm ở góc trên bến trái. Còn công thức - là kết quả nằm ở góc dưới bên phải
Thank you

Bài liên quan
0