Thông số bộ lọc thông thấp cho lấy mẫu hình ảnh


11

Tôi cần hạ thấp hình ảnh theo hệ số theo chiều ngang và s y theo chiều dọc ( s x , s y < 1 ).sxsysxsy1

Tôi muốn sử dụng bộ lọc thông thấp hữu hạn trước khi lấy mẫu xuống.n×m

Làm thế nào tôi nên xác định các thông số bộ lọc thông thấp ( và Gaussian σ ) để có được nó như là một chức năng của s xs y ?n,mσsxsy

Cụ thể, tôi thú vị trong trường hợp .sx=sy=1/2


câu hỏi liên quan đến [câu hỏi được hỏi ở đây] [1] [1]: stackoverflow.com/questions/3149279/iêu
isrish

1
Cảm ơn, nhưng câu hỏi này không phải là về cách xác định các tham số bộ lọc như là một hàm của hệ số thu hẹp.
Ben-Uri

Bạn muốn lọc bao nhiêu? Mục tiêu của bạn là gì?

1
Tôi muốn sử dụng bộ lọc thông thấp trước khi lấy mẫu để tránh răng cưa. Tôi muốn lưu giữ càng nhiều thông tin càng tốt mà không cần răng cưa.
Ben-Uri

1
Bạn cần xem xét biến đổi Fourier của bộ lọc để biết nó sẽ cắt tần số răng cưa tốt như thế nào trong khi vẫn giữ tần số dưới giới hạn Nyquist của kết quả được lấy mẫu. Biến đổi của một gaussian là một gaussian khác, có nghĩa là không có đường cắt sắc nét. Hầu như luôn luôn là một lựa chọn tốt hơn.
Đánh dấu tiền chuộc

Câu trả lời:


4

Bạn phải suy nghĩ về sự thay đổi tần số Nyquist giữa cả hai hình ảnh. Nếu tần số Nyquist của hình ảnh gốc là N, hình ảnh được ghép xuống sẽ có tần số Nyquist thấp hơn, xN, trong đó x có liên quan đến tỷ lệ kích thước giữa hình ảnh cuối cùng và hình ảnh ban đầu. Bạn sẽ cần phải loại bỏ các tần số không gian cao hơn xN trong ảnh gốc trước khi lấy mẫu xuống.

Phổ công suất của một Gaussian trong không gian hình ảnh, cũng là một Gaussian trong không gian tần số. Nếu chúng ta bỏ qua một lúc kích thước thứ hai, Gaussian trong không gian hình ảnh được xác định là exp (-x ^ 2 / s ^ 2), trong đó x đại diện cho pixel của bạn. Điều này được ánh xạ tới không gian tần số là exp (-w ^ 2 * s ^ 2), trong đó w là tần số. (Các) tham số sigma cho thấy rằng một Gaussian rộng trong không gian hình ảnh, tương ứng với một Gaussian hẹp trong không gian tần số.

Bạn muốn chọn một tham số sigma mang lại giá trị rất thấp trong không gian tần số ở tần số tương ứng với tần số Nyquist của hình ảnh được lấy mẫu xuống.


Đúng, nhưng làm thế nào để tôi dịch cái này sang kernel tích chập rời rạc? (đây là câu hỏi)
Ben-Uri

xem phần chỉnh sửa xin vui lòng ...
NoNameKhông

Cảm ơn, nhưng vẫn có một công thức để tìm sigma như là một hàm của tần số tối đa nên có trong kết quả đầu ra?
Ben-Uri

tôi không biết bất kỳ công thức.
NoNameKhông

1

nmσ

σσ23.37


0

Nếu bạn đang thực hiện giảm kích thước lớn (giả sử 2x, 3x, 4x), bạn có thể thực hiện lấy trung bình pixel để đạt được khử răng cưa tốt. Đó thực sự là lý do tại sao việc khử răng cưa sử dụng rất nhiều CPU / GPU bổ sung để làm cho các trò chơi video trông sắc nét hơn.

Vì bạn đang chuyển từ hình ảnh 1000x1000 sang hình ảnh 707x707 (chỉ là một ví dụ cho yếu tố tỷ lệ), bạn chính xác rằng răng cưa có thể là một vấn đề.

Rất may đây là một vấn đề mà nhiều người đã gặp phải và đã thực hiện khá nhiều công việc để giải quyết. Trong nhiều trường hợp, phép nội suy hai chiều là cách để đi. Có một số ví dụ về các phương thức nội suy khác nhau trông như thế nào ở đây:

http://www.compuphase.com/gpson/scale.htm

Thay đổi kích thước của OpenCV có một số phương thức được tích hợp sẵn:

http://opencv.wvelgarage.com/documentation/cpp/geometric_image_transformations.html#cv-resize

Nếu bạn đã chơi xung quanh với một số phương pháp nội suy đó và chúng không hoạt động tốt, vui lòng đăng một số loại hình ảnh nguồn mẫu và hình ảnh kết quả mẫu cho thấy sự thiếu hụt. Chúng tôi sẽ cần điều này để chẩn đoán vấn đề và thử và đưa ra giải pháp tốt cho vấn đề đó.


nhận xét rằng, mặc dù nhanh, trung bình pixel không phải là giải pháp lý tưởng cho chất lượng. trung bình pixel áp dụng hiệu quả bộ lọc chỉnh lưu. trong không gian tần số, điều này tương đương với nhân với một hàm chân dao động với giao điểm 0 tại các hài của Nyquist. điều này có hai vấn đề: 1. nó làm giảm tần số cao nhưng không nhiều 2. nó đảo pha ở mọi thùy bên kia. Cả (1) và (2) đều có thể góp phần khử răng cưa.
thang

0

Tôi thực sự không có câu trả lời hay cho bạn, nhưng đây là 2 lựa chọn mà bạn có thể thử:

  • σ3σ
  • nếu bạn sẵn sàng thực hiện các tính toán lấy mẫu tín hiệu tốt, thì tại sao không sử dụng biến đổi Fourier? Lấy FFT của hình ảnh của bạn, chỉ giữ lại phần phụ tương ứng với kích thước mục tiêu của bạn và đảo ngược biến đổi. Điều này sẽ áp dụng bộ lọc khử răng cưa trên phổ của bạn. Nếu có quá nhiều tạo tác (gợn sóng, đổ chuông) cho bạn, thì hãy áp dụng trên phổ bộ lọc Gaussian có chiều rộng tương ứng với kích thước mục tiêu của bạn.

0

s=1/2

[1,2,1]T[1,2,1]

Bạn sai rồi. Bạn đã quên một hệ số tỷ lệ 0,25? ... Và nếu vậy, đây là một lựa chọn phổ biến cho s = 1/2 chứ không phải 1 / sqrt (0,5).
Ben-Uri

Bạn có nhận xét gì về @ Ben-Uri không? Hệ thống đang đánh dấu bài đăng này là chất lượng thấp vì độ dài. Vui lòng xem xét sửa đổi hoặc loại bỏ nó.
Peter K.

1
ss2

ssσσsx,sy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.