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

Benachbarte Daten aus Matrix mit double Werte zählen

 

Palitsch

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.09.2015, 17:30     Titel: Benachbarte Daten aus Matrix mit double Werte zählen
  Antworten mit Zitat      
Hallo goMatlab,

ist es prinzipiell möglich benachbarte Werte (sagen wir mal, größer als ein Wert X) einer Matrix zu zählen?
Es gibt viele Ansätze die dann die Matrix in ein black&white Image umwandeln und dann mit bwconncomp hantieren, aber das will ich nicht.
Ich will das meine Matrix die double-Werte behält (denn es sind auch negative dabei die berücksichtigt werden)
Hat da jemand eine Idee??

Danke!


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 24.09.2015, 00:05     Titel:
  Antworten mit Zitat      
ich verstehe das problem noch nicht. bitte ein minimalbeispiel zur verfügung stellen das dein problem verdeutlicht. was hast du versucht? wie weichen die erzihlten ergebnisse von den gewünschten ab?
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
palitsch

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.09.2015, 09:24     Titel: Beispiel
  Antworten mit Zitat      
Hi Winkow,
also, ich schick mal den gesamten Code und geh dann spezifisch auf die Stelle ein.
Code:

% alle Bilder (tif-Format) im Ordner bestimmen
[stat,tifpics]=fileattrib('*.tif');
% Anzahl Bilder
picnr = length(tifpics);
 
for k=1:picnr
    % Bild einlesen
    bild{k} = imread(tifpics(k).Name);
   
    % Bild in Graustufenwerte umwandeln
    bild_grau{k}= rgb2gray(bild{k});  
end

% -> WICHTIG: hier wird uint8 in double umgewandelt was später Probleme macht. Subtraktion von aufeinanderfolgenden Graustufenbildern

 cell_array_bild=cell(1,picnr);
 imdouble=cell(1,picnr);
 for j=1:picnr
    cell_array_bild(1,j)=bild_grau(j);
    imdouble{j}=im2double(cell_array_bild{j});
 end  
cell_array_pdiff=cell(1,picnr-1);

% Trigger setzen (hier: gezählt werden alle Pixel mit Wert >0.05&<-0.05)

for i=1:picnr-1
    cell_array_pdiff{1,i}=imdouble{i}-imdouble{i+1};
    cell_array_pdiff_entstanden{1,i}=cell_array_pdiff{1,i}>0.05;
    cell_array_pdiff_zerfallen{1,i}=cell_array_pdiff{1,i}<-0.05;
end

% WICHTIG:Benachbarte Pixel werden gezählt und Pixelfläche wird berechnet (sollte so sein, aber ich denke bwconncomp funktioniert ja nur mit uint8 und deswegen sind alle Rechnungen danach Müll)

for h=1:picnr-1
CC1=bwconncomp(cell_array_pdiff_entstanden{1,i});
STATS1{h}=regionprops(CC1,'Area');
end  

for h=1:picnr-1
CC2=bwconncomp(cell_array_pdiff_zerfallen{1,i});
STATS2{h}=regionprops(CC2,'Area');
end

% Ergebnis in EXCEL einlesen
for index=1:numel(STATS1)
    a_index=STATS1{index};
    s_index=[a_index.Area];
    v=zeros(1,10);
    v(1:length(s_index))= s_index;
    %xlswrite('Blanalys_entstanden.xlsx', v, 'Blanalys_entstanden', sprintf('A%d',index))
end  

for index=1:numel(STATS2)
    a2_index=STATS2{index};
    s2_index=[a2_index.Area];
    v2=zeros(1,10);
    v2(1:length(s2_index))= s2_index;
    %xlswrite('Blanalys_zerfallen.xlsx', v2, 'Blanalys_zerfallen', sprintf('A%d',index))
end  
 

Also, überall wo im Code WICHTIG steht ist zu beachten.
Was ich im Prinzip machen will ist Pixel zu zählen. Es ist aber wichtig, dass bei der Subtraktion von den Pixel Matrizes auch negative Werte zugelassen werden. Daher die Umwandlung von uint8 zu Double.
bwconncomp funktioniert ja nicht mit Double denke ich.
Daher wollte ich nach einer Alternative fragen. Ist es möglich in einer Matrix benachbarte Double Werte (im Beispiel >0.05) zu zählen?
Danke!
 
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.