Verwijder alle volledige 0 rijen in een 3d matrix in matlab

Ik heb een grote afbeeldingsmatrix van 125x200x3, de afbeelding heeft veel grote zwarte gebieden, dus er zijn veel rijen met alle 0-en. Ik wil al deze zwarte gebieden volledig verwijderen. Ik weet dat ik alles zou moeten gebruiken (m == 0,3) maar het lijkt erop dat ik niet helemaal begrijp hoe ik het moet gebruiken met 3d matrix.

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

overschrijdt matrix ... Alle hulp wordt gewaardeerd!

2

1 antwoord

Als u rows met alle zwart wilt verwijderen, doet u het volgende:

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

De innerlijke oproep om ALL (wat je aan het doen was) geeft je een 125-bij-200 logische matrix met die voor elke zwarte pixel. De externe oproep voor ALL werkt in dimensie 2 (de kolommen), waardoor je bent een logische vector met enen voor rijen die allemaal zwart bevatten. Dit is wat u vervolgens als uw index gebruikt om rijen te verwijderen.

4
toegevoegd