Bild verkleinern, Grafik Filter - verwischen
-
Es gäbe Skalierungsalgos mit Interpolation, würde ich aber nicht benutzten.
Ich würde versuchen die Linie "abzugehen" und aller n Pixel ein Koordinatenpaar speichern. Dann würde ich diese Koordinaten skalieren und eine neue 1 Pixel breite Linie zeichnen.
Bye, TGGC (Dem beste BdT)
-
@Ahvolon[F-Bytes] die Linie zeichne ich nicht selber sondern bekomme sie
aus einem Canvas einer anderen Anwendung.@TGGC könnte klappen, ist jedoch ziemlich aufwendig, da die Linien von
verschiedenen anderen Linien überkreuzt werden können. Die Interpolations
Geschichte wäre am besten, kommt auch super raus wenn ich das mit einem
Grafik Programm mache.Hat jemand eine Idee wie man das gut machen kann?
-
am einfachsten wäre, wenn du beim verkleinern auf z.b. die halbe auflösung, 4pixel nimmst und deren durchschnitts farbwert als einen neuen setzt.
du kannst dann mit einfachen formel (falls du z.b. 1.f für weiß und 0.f für schwarz nimmst) einen besseren kontrast erzielen.
//beispiel for(unsigned int y=0;y<SMALLSIZEY;y++) for(unsigned int x=0;x<SMALLSIZEX;x++) pNewImage[x+y*SMALLSIZEX]=( pImage[x*2+y*2*SIZEY]+ pImage[x*2+1+y*2*SIZEY]+ pImage[x*2+(y*2+1)*SIZEY]+ pImage[x*2+1+(y*2+1)*SIZEY])*0.25f; //beispielfilter for(unsigned int a=0;a<SMALLSIZEX*SMALLSIZEY;a++) pNewImage[a] = pNewImage[a]*pNewImage[a]*pNewImage[a];
wobei ich hier davon ausging dass pImage und pNewImage float* sind.
rapso->greets();
-
Was hat das eine mit dem anderen zu tun ? Es ist trotzdem nur ein Bild und mit dem kannst du machen was du willst und somit kannst du auch die Linie breiter machen.
@rapso: Der Source ist absoluter Quatsch. Das ist nicht mehr als ne primitive Blur-Form. Und der Kontrast wird dadurch ganz sicher nicht besser sondern lediglich schlechter.
-
bei einer einzelnen Linie könnte ich diese schon breiter machen. Wenn es nun
aber mehrere sind und dann noch ein Gitternetz hinzukommt (Schaubild) wird die
Sache super kompliziert und das verkleinerte Bild würde wohl sehr "pixelig"
werden.Es geht mir im Grunde nur darum eine Vorschau zu erstellen.
Ich muss ein paar Diagramme drucken. Wenn ich diese nun in einer
Auflösung von 75 DPI anzeige, sind sie am Monitor gut zu sehen,
auf dem Drucker kommen sie aber mega schlecht raus. Wenn ich die Bilder
stauche, kann man am Monitor nichts mehr sehen und am Drucker sieht es gut aus.Nun will ich eine eigene Routine schreiben, die die Bilder stuacht und eine
extra Vorschau für den Monior erstellt.
-
Ahvolon[F-Bytes] schrieb:
@rapso: Der Source ist absoluter Quatsch. Das ist nicht mehr als ne primitive Blur-Form. Und der Kontrast wird dadurch ganz sicher nicht besser sondern lediglich schlechter.
danke gfx-guru
tja, schade, dass das was photoshop und die meißten anderen programme beim verkleinern von bildern machen quatsch ist, leider macht photoshop das so, wenn du bilder 'bilinear' verkleinerst.
und der filter dahinter macht jede farbe bis auf weiß (1.f,1.f,1.f) dunkler, was dafür sorgen würde dass irgendwelche mittelwerte zwsichen 1.f und 0.f schwärzer werden würden und er somit seine linie besser sehen könnte.rapso->greets();
-
Acidmrp schrieb:
bei einer einzelnen Linie könnte ich diese schon breiter machen. Wenn es nun
aber mehrere sind und dann noch ein Gitternetz hinzukommt (Schaubild) wird die
Sache super kompliziert und das verkleinerte Bild würde wohl sehr "pixelig"
werden.Es geht mir im Grunde nur darum eine Vorschau zu erstellen.
Ich muss ein paar Diagramme drucken. Wenn ich diese nun in einer
Auflösung von 75 DPI anzeige, sind sie am Monitor gut zu sehen,
auf dem Drucker kommen sie aber mega schlecht raus. Wenn ich die Bilder
stauche, kann man am Monitor nichts mehr sehen und am Drucker sieht es gut aus.Nun will ich eine eigene Routine schreiben, die die Bilder stuacht und eine
extra Vorschau für den Monior erstellt.wäre sowas ok?
das entsteht wenn du es so machst wie in meinem pseudocode beschrieben
rapso->greets();
-
du solltest mal bei google unter sampling bzw. sub-sampling (verkleinern von bildern mit filtern) schauen. beim resizen werden ja einfach brutal pixel gekillt.
ImageMagick bietet sowas zum beispiel an (sourceforge).
ein linie in nem bild zu verbreitern und sie anschliessend zu verkleinern ist viel zu aufwendig. auch eine kontur-extraktion kommt nicht in frage. da müssten viel zu viele kleinigkeiten berücksichtigt werden.
ich würde beim filtern eher noch die 8er-nachbarschaft betrachten und nicht nur die 4er.
-
Sunday schrieb:
@rapso
ich würde beim filtern eher noch die 8er-nachbarschaft betrachten und nicht nur die 4er.war ja auch nur ein pseudocode
ich würde es auch mit verschiedenen patterngrößern und gewichtungen versuchen.rapso->greets();
-
Das war weder Achter- noch Vierernachbarschaft. Und das man die bekannten Verkleinerungsalgorithmen bei Google raussuchen kann, ist auch klar. Also sollte man das einfach tun, wenn die Vorschläge hier "Mist" sind.
Bye, TGGC (Dem beste BdT)
-
@rapso: Das ganze wird bei einer Linie von 1 Pixel nicht helfen. Nehmen wir an du hast in der Maske 4 Pixel. Davon 3 weiße und einen schwarzen.
Dem entsprechend kommst du auf: ( 0+1+1+1 ) * 0.25 = 0.75
Im entstehenden Bild also dann 0.75^3 = 0.42... .Schon ein tolles Resultat
Je größe du die Maske wählst, desto schlechter wird das Resultat. Auch klar, denn bei einer Linie von 1 Pixel Breite überwiegt der Hintergrund.
-
Ahvolon[F-Bytes] schrieb:
@rapso: Das ganze wird bei einer Linie von 1 Pixel nicht helfen. Nehmen wir an du hast in der Maske 4 Pixel. Davon 3 weiße und einen schwarzen.
Dem entsprechend kommst du auf: ( 0+1+1+1 ) * 0.25 = 0.75
Im entstehenden Bild also dann 0.75^3 = 0.42... .Schon ein tolles Resultat
Je größe du die Maske wählst, desto schlechter wird das Resultat. Auch klar, denn bei einer Linie von 1 Pixel Breite überwiegt der Hintergrund.dieser worstcase tritt kaum auf, da die linie nebeneinander liegende pixel hat, meißtens also 0.5 als resultat und nach dem filter wäre 0.125, das resultat ist dann so und als verkleinerung vom orginal recht ok.
ich hab von dir noch keinen 10-zeiler gesehen mit besseren resultaten
rapso->greets();
-
rapso schrieb:
dieser worstcase tritt kaum auf
Dieser Fall tritt bei Linien mit Kurven recht häufig auf, was mehr als deutlich an deinem Resultat zu sehen ist.
rapso schrieb:
recht ok.
Dann solltest du dir das ganze vielleicht nochmal genauer ansehen.
rapso schrieb:
ich hab von dir noch keinen 10-zeiler gesehen mit besseren resultaten
Sorry, dass ich keinen Source poste bei dem die Resultate so schlecht sind wie bei deinem. Da könnte er letztendlich auch seine Methode nehmen und am Ende nen Blur Filter drüber laufen lassen. Die Qualität wäre dann genauso schlecht.
-
Genuch Geflame ihr zwei!!
Sonst kommt der böse rapso, und schließt den Laden hier!!
-
Ahvolon[F-Bytes] schrieb:
rapso schrieb:
dieser worstcase tritt kaum auf
Dieser Fall tritt bei Linien mit Kurven recht häufig auf, was mehr als deutlich an deinem Resultat zu sehen ist.
kurven=selten=kaum vorhanden.
Ahvolon[F-Bytes] schrieb:
rapso schrieb:
recht ok.
Dann solltest du dir das ganze vielleicht nochmal genauer ansehen.
deaktivier dein "reality distortion field".
Ahvolon[F-Bytes] schrieb:
rapso schrieb:
ich hab von dir noch keinen 10-zeiler gesehen mit besseren resultaten
Sorry, dass ich keinen Source poste ...
du brauchst dich nicht dafür entschuldigen, dafür hast du hier viele beiträge gebracht ohne weiter zu helfen.
rapso->greets();
-
rapso schrieb:
kurven=selten=kaum vorhanden.
Sieh dir dein Resultat mal genau an. So blind wie du kann man doch echt nicht sein. Solltest vielleicht mal einsehen, dass weder du noch dein Resultat hier auch nur annähernd perfekt ist.
-
Ahvolon[F-Bytes] schrieb:
rapso schrieb:
kurven=selten=kaum vorhanden.
Sieh dir dein Resultat mal genau an. So blind wie du kann man doch echt nicht sein. Solltest vielleicht mal einsehen, dass weder du noch dein Resultat hier auch nur annähernd perfekt ist.
jaja sprücheklopfer, nun ist gut
rapso->greets();
-
um rapso zu unterstützen, ich versteh ehrlich gesagt auch nicht, was dieser Ahvolon immer meint besser zu wissen / zu sein. Immer nur Kritik üben aber keine besseren Vorschläge machen, und das in einem Ton, der durchaus wütend machen kann.
-
rapso schrieb:
jaja sprücheklopfer, nun ist gut
Man sollte meine, dass ein kurzes Blick auf das Bild meine Aussagen mehr als verdeutlicht. Aber erzähl nur ruhig immer das Gegenteil von dem was auf deinem Bild zu sehen ist. Naja, manche Menschen sind ja so derart selbstverliebt...
-
Ahvolon[F-Bytes] schrieb:
rapso schrieb:
jaja sprücheklopfer, nun ist gut
Man sollte meine, dass ein kurzes Blick auf das Bild meine Aussagen mehr als verdeutlicht. Aber erzähl nur ruhig immer das Gegenteil von dem was auf deinem Bild zu sehen ist. Naja, manche Menschen sind ja so derart selbstverliebt...
...und manchmal labern leute sehr viel ohne auch nur einmal zu helfen.
rapso->greets();