Удаление всех полных 0 строк в 3d-матрице в Matlab - PullRequest
2 голосов
/ 06 декабря 2011

У меня матрица большого изображения 125x200x3, на изображении много больших областей черного цвета, поэтому есть много строк всех нулей. Я хочу полностью удалить все эти черные области. Я знаю, что я должен использовать все (m == 0,3), но, похоже, я не совсем понимаю, как использовать его с 3D-матрицей.

m(all(m==0,3),:,:)=[]

превышает матрицу ... Любая помощь приветствуется!

1 Ответ

4 голосов
/ 06 декабря 2011

Если вы хотите удалить строки , содержащие весь черный, сделайте следующее:

m(all(all(m == 0,3),2),:,:) = [];

Внутренний вызов ALL (что вы делали) дастВы логическая матрица 125 на 200 с единицами для каждого черного пикселя.Внешний вызов ALL работает по измерению 2 (столбцы), давая вам логический вектор с единицами для строк, которые содержат весь черный цвет.Это то, что вы затем используете в качестве индекса для удаления строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...