2016-04-18 4 views
0

Ich habe ein Bild; Ich führe eine Schleife darüber und erstelle ein Zellen-Array. Aber der Prozess für alle Werte ist sehr langsam. Ist es irgendwie möglich, den Prozess zu befestigen?Jeder andere Ansatz für Fasters Implementierung - Matlab-Zellen-Array

Oder eine andere Möglichkeit, dies schneller zu tun?

Jede Hilfe wäre willkommen.

[a,b] = size(depth); 
    for i=1:a % a = 1024 
    for j=1:b %b = 1360 

    if isfinite(depth(i,j)) 
       segId = (label(i,j)); 
       if (segId > 0) 
        mycell{1,idx,segId} = {i,j,depth(i,j)}; 
        idx=idx+1;  
       end 
      end 
      end 
     end 

Antwort

0

Statt die Größe der mycell jeder Interaktion Aktualisieren erstellen, die Zellstruktur voraus. Das sollte es ein wenig befestigen.

Nichtsdestoweniger werten Sie alle Punkte eines Bildes aus. Warum nicht ein paar mathematische Operationen machen?

[rol, col] = finden (Tiefe (Tiefe> 0)) - Ich scanne schnell Ihren Code, Sie suchen nach diesen Werten, denke ich.

Dies gibt Ihnen die Positionen in Ihrem Bild, die Sie finden möchten. Vielleicht müssen Sie dies nur für einen Zyklus setzen und es wird schneller.

+1

Ich bin nicht bewusst, die Größe jeder Zelle, deshalb ich nicht was Wert sollte ich zugewiesen .. @ user2205242. Für die zweite ... Option ... ist der Tiefenwert nicht immer größer als 0. Es ist auch negativ ... Also, ist es möglich, isfinite statt der Tiefe> 0 zu verwenden? – Akash

1

Dies ist viel schneller als früher Ansatz. Danke für die Hilfe.

+0

gut! froh, dass es geholfen hat :) – 16per9