WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

knnsearch außerhalb von Schleife?

 

Ninawe
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 07.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2015, 15:14     Titel: knnsearch außerhalb von Schleife?
  Antworten mit Zitat      
Hallo,
ich habe folgendes Problem: Ich habe ein 2000 x 2000 pixel großes Bild. Etwa 3000 Pixel haben einen zusätzlichen Wert. Nun will ich für die anderen Pixel ohne Wert eine Interpolation aus den Pixeln mit Wert berechnen.
Dafür suche ich zurzeit für jeden Pixel die nächsten Nachbarn, die einen Wert besitzen. Das dauert aber unglaublich lange, wenn ich für jedes Pixel diese Suche durchführen muss.
Gibt es eine Möglichkeit den kd Baum aufzustellen, bevor ich in die Schleife für jedes Pixel gehe? Sodass ich dann für jedes Pixel nur auf den Baum zugreife und ihn nicht neu erstelle?
Mein Code sieht vereinfach so aus:
Code:
nCols =2000;
nRows =2000;
numberOfNeighbors = 10;
% all pixelindices (linear)
I = 1:nCols*nRows;
X = randi(100,[2,3000]); % pixels that have a data value (for this example just random)
X(3,:) = randi(1000,[1,3000]); % third line gives data for pixels
I2 = sub2ind([nRows,nCols],X(:,2),X(:,1));
I3 = I;
% save pixel indices which need data
I3(I2) = [];
H = zeros(1,nCols*nRows);
H(I2) = X(3,:);
% read image

[imagedata, imagemap] = imread('image.bmp');

for pixelind = I3
    % KNN
    [curtestpixelrow,curtestpixelcol] = ind2sub([nRows,nCols],pixelind); %ind2sub goes colwise
    curpixelind = [curtestpixelcol,curtestpixelrow]; % swap row and col to fit to image
    [n,d]=knnsearch(X,curpixelind,'k',numberOfNeighbors,'distance','minkowski','p',5);
   
    neighbors = X(n,:);
    % do some more computing...
end


wäre toll, wenn mir jemand helfen könnte meinen Code schneller bzw. effizienter zu machen.
Danke schonmal Smile
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 22.10.2015, 15:22     Titel:
  Antworten mit Zitat      
hmm warum benutzt du nicht interpolationsfunktion von matlab? zb griddata gab es dabei probleme oder so?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Ninawe
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 07.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2015, 15:25     Titel:
  Antworten mit Zitat      
es ist ein bisschen komplizierter als ich es hier dargestellt habe. Die Interpolation verwendet zwar die Werte der Nachbarn, gleichzeitig aber auch noch einige andere Parameter, die Farbe der Pixel etc. Deswegen ginge es mir hier schon darum, wie ich den knn schneller machen kann, bzw. auslagern
Private Nachricht senden Benutzer-Profile anzeigen
 
Ninawe
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 07.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2015, 10:15     Titel:
  Antworten mit Zitat      
Wenn man die Doku von knnsearch richtig durchliest, findet man auch die Antwort Embarassed
http://de.mathworks.com/help/stats/createns.html
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.