Tôi đang thực hiện trích xuất đối tượng địa lý từ một hình ảnh trong Matlab. Tôi phải áp dụng nhiều chức năng trên các cửa sổ nXn cho mục đích này (chẳng hạn như để tìm phương sai trên mỗi cửa sổ 3X3, v.v.
Có cách nào dễ dàng và hiệu quả để thực hiện điều này trong Matlab ngoài việc lặp lại ma trận và Đối với một số chức năng, tôi đã có thể tìm thấy một mặt nạ tương đương và áp dụng chúng bằng cách sử dụng filter2, nhưng đối với nhiều người khác tôi dường như không có một sự xa xỉ như vậy (một ví dụ tốt: trung bình của một cửa sổ 3x3).
Những gì tôi muốn một cái gì đó giống như arrayfun, nhưng một cái gì đó mà áp dụng cho các cửa sổ nxn, không yếu tố cá nhân là.
Cảm ơn,
SundarLàm cách nào để áp dụng các cửa sổ di chuyển cho ma trận 2D trong MATLAB?
Trả lời
Nếu bạn có hộp công cụ xử lý hình ảnh thì bạn có thể sử dụng blkproc để xử lý nxm khối hình ảnh của mình bằng các hàm được xác định tùy chỉnh. Dưới đây là một ví dụ
function Ip = imageProcessed(II,blockSize)
% FUNCTION imageProcessed calculates average value of blocks of size nxm
% blocks
if nargin<2,
% default/example value for block size
blockSize = [3 4];
end
if size(II,3)>1,
% blkproc requires a grayscale image
% convert II to gray scale if it is RGB.
II=rgb2gray(II)
end
% Custom average function.
myAveFun = @(x) ones(size(x))*sum(x(:))/length(x(:));
% use blkproc to process image
Ip = blkproc(II,[blockSize(1), blockSize(2)],myAveFun);
end
Lưu ý:
Tính đến hình ảnh MATLAB 2009b của Processing Toolbox, blkproc được depcrecated và thay thế bằng blockproc (xem R2099b phần here). Vì vậy, hai dòng cuối cùng có thể được thay đổi thành:
myAveFun = @(blkstrct) ones(size(blkstrct.data))*mean(blkstrct.data(:))
Ip = blockproc(II,blockSize,myAveFun);
Cảm ơn bạn, tôi có hộp công cụ xử lý hình ảnh và đó chính xác là những gì tôi cần. – sundar
chào mừng bạn. vui vì nó đã giúp. – Azim
Sự trợ giúp cho chức năng này đã chỉ cho tôi 'colfilt'. Hóa ra colfilt với một cửa sổ 'trượt' làm cho công việc của tôi dễ dàng hơn. Cảm ơn bạn đã mở mảng chức năng mới này cho tôi. – sundar
- 1. Tính ma trận chuyển đổi 2D từ ma trận 2D ban đầu và kết quả
- 2. Định hình lại ma trận 3d thành ma trận 2d
- 3. áp dụng chức năng tiêu chuẩn để hàng của ma trận - Matlab
- 4. Sắp xếp ma trận 2D nhị phân?
- 5. Matlab 3D xem ma trận
- 6. Cách chức năng để xếp chồng danh sách ma trận 2d vào ma trận 3d
- 7. Nhân ma trận trong mảng ô Matlab?
- 8. Làm cách nào để phân chia các phần tử ma trận theo tổng cột trong MATLAB?
- 9. Mảng Ma trận 3D Matlab
- 10. So sánh hai ma trận trong Matlab
- 11. Làm cách nào để áp dụng kiểu cho Kiểm soát cửa sổ trong WPF?
- 12. Áp dụng các phép biến đổi ma trận thành BoundingBox
- 13. Làm thế nào để áp dụng ma trận biến đổi cho các tọa độ đường dẫn trong Raphael JS 2?
- 14. Làm cách nào để lặp qua từng phần tử trong ma trận n chiều trong MATLAB?
- 15. Làm cách nào để tạo các lệnh di chuyển cửa sổ bỏ qua một cửa sổ nhất định?
- 16. Làm thế nào để làm cho một cửa sổ undecorated di chuyển/kéo được trong JavaFX?
- 17. Cách nhanh nhất có thể để lưu ma trận Matlab
- 18. phần tử ma trận trộn trong MATLAB
- 19. R: áp dụng chức năng trên ma trận và giữ kích thước ma trận
- 20. Làm cách nào để lưu ma trận các số nguyên vào một tệp văn bản trong Matlab?
- 21. Lập chỉ mục mảng 2D trong MATLAB
- 22. Chuyển đổi ma trận MATLAB thành một véc tơ
- 23. Làm thế nào để chuyển đổi ma trận xoay 3x3 thành ma trận 4x4?
- 24. Hiệu quả nhân các ma trận rất lớn trong MATLAB
- 25. Ma trận chiếu 3d đến 2d
- 26. Cách gán giá trị cho các vị trí cụ thể của ma trận trong MATLAB?
- 27. Làm cách nào để thay đổi kích thước ma trận trong MATLAB?
- 28. Áp dụng một hàm cho mỗi hàng của ma trận hoặc khung dữ liệu
- 29. Làm thế nào để áp dụng hàm trên mỗi chỉ số của phần tử ma trận
- 30. xmonad: di chuyển cửa sổ nổi mới
Có thể giúp bạn cập nhật câu hỏi và liệt kê các hoạt động cụ thể bạn muốn áp dụng cho các phần tử cửa sổ. Có thể có nhiều cách để biến chúng thành các phần tử mặt nạ/bộ lọc để sử dụng với FILTER2 (hoặc có thể là CONV2). – gnovice
bạn có hộp công cụ xử lý hình ảnh không? – Azim