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

Winkel berechnen zwischen Kante eines Objektes und Bildrand

 

Kaeferlieschen
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 09.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2017, 18:36     Titel: Winkel berechnen zwischen Kante eines Objektes und Bildrand
  Antworten mit Zitat      
Hallo,

ich bräuchte nochmal Hilfe. Ich möchte einen Winkel zwischen einer Kante und dem Bildrand bestimmen.
Dazu habe ich bereits einen Zeilenvektor am Bildrand bestimmt. Wie bekomme ich nun den zweiten Zeilenvektor aus der erkannten Kante?

Ich möchte das Bild mit Hilfe des Winkels drehen und anschließend die Ränder abschneiden. Da diese meine weitere Bildauswertung stören. Da das Bild aber jedes Mal anders liegt, muss ich das Bild erst zurecht drehen.

Es wäre toll, wenn ihr eine Idee für mich habt. Razz
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.06.2017, 15:47     Titel: Re: Winkel berechnen zwischen Kante eines Objektes und Bildr
  Antworten mit Zitat      
Hallo Kaeferlieschen,

Welche Inputs hast Du genau? Wie ist "die Kante" definiert? Was genau ist "der Bildrand" und welche "Zeilenvektoren" bestimmst Du? Erkläre es also nochmal für die Leser im Forum, die nicht die geringste Ahnung haben, was Du machst.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Kaeferlieschen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 09.06.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.06.2017, 10:03     Titel:
  Antworten mit Zitat      
Hallo Jan,
da hast du natürlich recht. Sorry, für meine ungenauen Angaben.


Grundsätzlich möchte ich in einem Kanal Blasen auswerten. Dafür habe ich einen Algorithmus geschrieben, der auch gut funktioniert.
Ich bekomme nur ein Problem, wenn ich den Algorithmus auf andere Bilder anwende. Denn neben meinem Kanal befindet sich eine Größenskale, welche mein Algorithmus erkennt und dann Fehler meldet. Er kann die gelabelten Blasen dann irgendwie nicht finden und folglich funktioniert der Algorthmus dann nicht.
Ich möchte diese Störungen vorher ausschneiden und den Kanal gleich ausrichten.
Denn die auszwertenden Bilder stammen von einem Video. Diese möchte ich gerade aneinander setzen.
Ich dachte mir, wenn der Kanal erstmal ausgerichtet ist, dann kann ich die Kanten mit imcrop() einfach ausschneiden, weil die Position des Kanals im Bild ja dann immer die selbe ist.
Das Ausrichten wollte ich mittels einer Rotationsmatrix versuchen. Dazu benötige ich aber einen Winkel des Kanals, denn ich irgendwie bestimmen will.
Ich möchte deswegen eine Rotationsmatrix verwenden, weil die Rotation des Bildes je nach Aufnahme unterschiedlich ist.

Auf den Bild seht ihr links nur den Kanal und rechts die Kantendetektion.

Bis jetzt habe ich sehr viel ausprobiert, aber ich stecke fest. Ich freue mich also über jede Idee.



Code:
length=size(videoNamen);
for i=1:length(2)
    Name=cell2mat(videoNamen(i)); %beliebige Formate in Matlab-formate umwandeln
    Video=sprintf('%s//%s.avi',videoPfad,Name); %Video in String umwandeln
end
%aus Video Bilder generieren
Bild=VideoReader(Video);


frame=readFrame(Bild);
% frameroh=readFrame(Bild);
% frame=imread('CropBild.bmp');%Frame wurde mit Schneide-Tool geschnitten
% und wieder neu gespeichert
 
%% Kantendetektierung Kanal
gris=rgb2gray(frame);%Buntes Bild in graues Bild


 level=0.8;%Erkennung Kanal
 Binarbild=im2bw(gris,level);
 

 %% Berechnung Rotationswinkel
[Bildlange Bildbreite]=size(Binarbild);

Hypo= [0: Bildbreite];
Edge=edge(Binarbild,'sobel');
a=strel('line',Bildbreite,0);
Dilation=imdilate(Edge,a);




 figure;
 subplot(3,2,1); imshow(Binarbild);
subplot(3,2,2); imshow(Dilation);


Kanal.fig
 Beschreibung:

Download
 Dateiname:  Kanal.fig
 Dateigröße:  48.31 KB
 Heruntergeladen:  426 mal
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 - 2024 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.