Robię wyodrębnianie funkcji z obrazu w programie Matlab. Muszę zastosować do tego celu wiele funkcji w oknach nXn (np. Znaleźć wariancję dla każdego okna 3X3 itd.).
Czy istnieje łatwy i skuteczny sposób na to zrobić w Matlab innym niż pętla nad macierzą i zbierając elementy okna za każdym razem?
Dla niektórych funkcji udało mi się znaleźć odpowiednik maski i zastosować je przy użyciu filtra2, ale dla wielu innych nie wydaje mi się, żebym miał taki luksus (jeden dobry przykład: mediana okno 3X3).
Co chcę coś jak arrayfun, ale coś, co odnosi się do okien nxn, a nie poszczególnych elementów.
Dzięki
SundarJak zastosować ruchome okna do macierzy 2D w MATLAB?
Odpowiedz
Jeśli masz przybornik do przetwarzania obrazu, możesz użyć bloku blkproc do przetworzenia bloków obrazu przy użyciu niestandardowych funkcji zdefiniowanych przez użytkownika nxm. Oto przykład
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
Uwaga:
Jak MATLAB Image Processing Toolbox za 2009b, blkproc został depcrecated i zastąpione blockproc (patrz punkt R2099b here). Zatem dwie ostatnie linie można zmienić na:
myAveFun = @(blkstrct) ones(size(blkstrct.data))*mean(blkstrct.data(:))
Ip = blockproc(II,blockSize,myAveFun);
Dziękuję, mam zestaw narzędzi do przetwarzania obrazu i to jest dokładnie to, czego potrzebowałem. – sundar
Twoje powitanie. cieszę się, że pomogło – Azim
Pomoc dla tej funkcji wskazywała na "zbieranie". Okazuje się, że kolaps z "przesuwnym" oknem czyni moją pracę jeszcze łatwiejszą. Dziękuję za udostępnienie mi nowej tablicy funkcji. – sundar
- 1. Indeksowanie macierzy 2D w programie Matlab
- 2. 2D własnym Dekonwolucja w MATLAB
- 3. Obliczanie macierzy transformacji 2D z początkowej i wynikowej macierzy 2D
- 4. Konkluzja macierzy 2D w f #
- 5. Jak mogę zapisać macierz w rzędzie innej macierzy? MATLAB
- 6. Funkcje macierzy Matlab w java
- 7. MATLAB rysuje ruchome punkty danych w osobnych partiach jednocześnie
- 8. Porównanie wielu macierzy matlab
- 9. Colorplot z macierzy 2D matplotlib
- 10. Splot 2D w matlab - optymalizacja kodu
- 11. Ocena macierzy homografii 2D-3D
- 12. gnuplot: wykres 2D macierzy danych
- 13. Excel VBA - jak zmniejszyć liczbę macierzy 2D?
- 14. Jak przypisać wartość do określonych lokalizacji macierzy w programie MATLAB?
- 15. Największy prostokąt 1 w 2d macierzy dwójkowej
- 16. Algorytm Dijkstry dla macierzy 2D w Javie
- 17. Jak zapętlić elementy macierzy w funkcji mex C++ dla MATLAB?
- 18. Przypisanie wektor wierszowi macierzy MATLAB
- 19. Łączenie macierzy wartości i indeksów w MATLAB
- 20. Złożoność czasu mnożenia macierzy w MATLAB
- 21. Efektywne mnożenie bardzo dużych macierzy w MATLAB
- 22. Prealokacja macierzy komórek w programie matlab
- 23. Jak używać macierzy MATLAB jako kluczy do obiektów java HashMap?
- 24. Obliczanie macierzy kowariancji w programie Matlab
- 25. Wydajna metoda wyszukiwania elementów w macierzy MATLAB
- 26. Matlab Dla pętli tylko dla "powłoki" macierzy
- 27. wektory konkatenacji macierzy komórkowej w matlab
- 28. det macierzy zwraca 0 w matlab
- 29. druk n * m macierzy w Matlab
- 30. Dlaczego transformacje 2D wymagają macierzy 3x3?
Może pomóc, jeśli możesz zaktualizować pytanie i wyświetlić konkretne operacje, które chcesz zastosować do okienkowych elementów. Mogą istnieć sposoby zamiany ich w maski/elementy filtrujące do użycia z FILTER2 (lub ewentualnie CONV2). – gnovice
czy masz przybornik do przetwarzania obrazu? – Azim