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

Bild mit Kreis als RGB-Bild

 

matlabgo
Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 16.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2018, 14:40     Titel: Bild mit Kreis als RGB-Bild
  Antworten mit Zitat      
Hallo liebe Community,
ich habe folgende Aufgabe, siehe Anhang.

Jedoch hab ich keine richtigen Ansätze etwas zu programmieren, habe etwas von viscircles gelesen jedoch weiß ich nicht wie ich das aufgabenbezogen anwenden kann.

Denkansätze wäre von mir:
- die Grenzen von einem Kreis festmachen
- mit einer for-Schleife durch jeden Pixel gehen und alle Kanäle auf 0
- wenn die for-Schleife auf die Grenzen des Kreises stößt hört sie auf

Jemand eine idee wie ich die Grenzen des Kreises fest machen kann?

Vielen dank im Voraus.

Unbenannt89.png
 Beschreibung:

Download
 Dateiname:  Unbenannt89.png
 Dateigröße:  609.55 KB
 Heruntergeladen:  253 mal
Private Nachricht senden Benutzer-Profile anzeigen


matlabgo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 16.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2018, 15:10     Titel:
  Antworten mit Zitat      
Code:
function [F] = kreis(A,r)

for x = 1:size(A,2)
   
    for l = 1:size(A,1)
       
     
            if
               
                F(x,y,1) = 0;
                F(x,y,2) = 0;
                F(x,y,3) = 0;
               
         
            end
    end
end


nur die If-Bedinung fehlt halt, welche die Grenze wäre.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.08.2018, 15:31     Titel:
  Antworten mit Zitat      
Hallo,

du hast doch eine ähnliche Frage gestellt, in der es darum ging, einen Bildausschnitt mit einem Kreis zu übermalen. Jetzt ist es genau das umgekehrte.

Die Bedingung ist in Worten: Bildpunkt (x,l) soll von Bildzentrum (zu errechnen aus Zeilen- und Spaltenanzahl) weniger als r entfernt sein. Du solltest dich übrigens für y oder l entscheiden.

Randnotiz: ihr habt anscheinend zu einem großen Teil gelernt, Schleifen zu programmieren. In MATLAB versucht man aber tendenziell, Probleme ohne Schleifen zu lösen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabgo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 16.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2018, 15:43     Titel:
  Antworten mit Zitat      
Sorry, habe Schwierigkeiten mit RGB insbesondere, wenn es um Kreise geht Crying or Very sad

Code:
function [F] = kreisbild(A,r)
F = A;

height = size(A,2)
width = size(A,1)

for x = 1:1:width
   
    for y = 1:1:height
       
            if F(x,y) < r        
           
                F(x,y,1) = 0;
                F(x,y,2) = 0;
                F(x,y,3) = 0;
                   
            end
    end
    imshow(F)
end


habe es jetzt so verändert aber es klappt trotzdem nicht.

Der schwarze Balken verläuft von oben nach unten, während ich es plotte.

Unbenannt99.png
 Beschreibung:

Download
 Dateiname:  Unbenannt99.png
 Dateigröße:  243.92 KB
 Heruntergeladen:  238 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.08.2018, 15:49     Titel:
  Antworten mit Zitat      
Hallo,

versuch doch die Teile stückchenweise zusammenzusetzen.
1. Das Bildzentrum kannst du aus height und width bestimmen (jeweils durch 2 teilen). 2. Dann die Formel sqrt( (x1-x2)^2 + (y1-y2)^2 ) verwenden, um den Abstand zwischen momentanem Punkt und Bildzentrum zu bestimmen.
3. Dieser Abstand muss > r sein, wenn der Bildpunkt geschwärzt werden soll.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabgo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 16.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2018, 15:55     Titel:
  Antworten mit Zitat      
Code:
function [F] = kreisbild(A,r)
F = A;

height = size(A,2)
width = size(A,1)

for x = 1:1:width
   
    for y = 1:1:height
       
            if (x - width/2)^2 + (y - height/2)^2 > r        
           
                F(x,y,1) = 0;
                F(x,y,2) = 0;
                F(x,y,3) = 0;
                   
            end
    end
    imshow(F)
end


Vielen Dank für die schnellen Antworten, die Formel war glaub ich das was mir gefehlt hatte.
Jedoch habe ich sie glaub ich falsch eingebaut, denn der Balken zieht sich immer noch von oben nach unten.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.08.2018, 16:50     Titel:
  Antworten mit Zitat      
Hallo,

mir fällt auf den ersten Blick nur die fehlende Wurzel auf.

Ansonsten kann ich dir nur das empfehlen, was ich auch machen würde, wenn ich ein lauffähiges Beispiel hätte: debuggen und zeilenweise durchgehen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabgo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 16.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2018, 18:43     Titel:
  Antworten mit Zitat      
Hmm , es klappt immer noch nicht Sad

Der Balken geht einfach nur noch von oben nach unten..
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.08.2018, 20:02     Titel:
  Antworten mit Zitat      
Hallo,

ich hab es bei mir mal mit Beispieldaten getestet, und es hat geklappt.
Das Problem liegt also entweder bei den Daten oder beim Aufruf --> poste doch mal bitte beides.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
matlabgo
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 48
Anmeldedatum: 16.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2018, 20:09     Titel:
  Antworten mit Zitat      
Hab es nochmal versucht und es hat geklappt, war wohl ein fehler bei der Eingabe vorhanden.

Vielen vielen Dank!
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.