Rauschen im Bild entfernen
-
Hat jemand Quellcode (vielleicht sogar für den Borland C++ Builder 5) zum Entfernen von Rauschen in Bildern?
Ich habe mir selber einen Median-Filter programmiert, aber der ist super langsam (max. 1 Bild pro Sekunde), da ich mich mit den Techniken nicht so gut auskenne - ich hab mehrere for Schleifen und dann eine Maske furchs Bild geschoben...Danke schonmal.
Gruß,
Micha
-
such mal nach scanline()
-
MHX schrieb:
Hat jemand Quellcode (vielleicht sogar für den Borland C++ Builder 5) zum Entfernen von Rauschen in Bildern?
Ich habe mir selber einen Median-Filter programmiert, aber der ist super langsam (max. 1 Bild pro Sekunde), da ich mich mit den Techniken nicht so gut auskenne - ich hab mehrere for Schleifen und dann eine Maske furchs Bild geschoben...Danke schonmal.
Gruß,
MichaZeig den code mit dem filter mal, vielleicht fällt hier ja jemandem auf anhieb auf, wie du es schneller hinbekommst.
btw. wie gross ist denn so ein bild dass du vom rauschen befreist?rapso->greets();
-
scanline() verwende ich bereits. Ich versuche mich jetzt mal an CreateDIBSection().
-
Mal mit HW Unterstürtzung auf der GraKa probieren? Würde sicher was bringen.
Bye, TGGC \-/
-
Nein, zum einen habe ich da keine Ahnung von und zum anderen soll das nicht an eine bestimmte GraKa gebunden sein. Mein Algorithmus ist einfach zu schlecht, weil ich nichts passendes, einfach erklärendes finde.
-
Zeig mal den Code.
-
hab mal ein wenig gegoogelt
meinst du sowas?
ungetestet so ins forum gehackt für ein sw-bildint glaettungsfilter[]={1,1,1,1,1,1,1,1,1}; int gradientenfilterx[]={-1,-1,-1,0,0,0,1,1,1}; int gradientenfiltery[]={-1,0,1,-1,0,1,-1,0,1}; int sobelfilterx[]={1,2,1,0,0,0,-1,-2,-1}; int sobelfiltery[]={-1,0,1,-2,0,2,-1,0,1}; int binominalfilter[]={1,2,1,2,4,2,1,2,1}; int laplacefilter[]={1,0,1,0,-4,0,1,0,1}; void filter(int* picture,int xdim, int ydim, int* filter){ int i,j,k,l; int x_min,x_max,y_min,y_max; int *rv; rv = new int[xdim*ydim]; for(j=0;j<ydim;j++) for(i=0;i<xdim;i++){ rv[i+j*xdim]=0; x_min=i?0:1; y_min=j?0:1; x_max=i+1-xdim?3:2; y_max=j+1-ydim?3:2; for(k=y_min;k<y_max;k++) for(l=x_min;l<x_max;l++) rv[i+j*xdim]+= picture[i-1+l + (j-1+k)*xdim] * filter[l+3*k]; } //hier noch den maxwert suchen und alle werte auf 255 normieren und ins alte bild kopieren... delete rv; }
-
MHX schrieb:
Nein, zum einen habe ich da keine Ahnung von und zum anderen soll das nicht an eine bestimmte GraKa gebunden sein. Mein Algorithmus ist einfach zu schlecht, weil ich nichts passendes, einfach erklärendes finde.
Das läuft dann nicht mit einer bestimmten, sondern allen die z.b. DirectX kompatibel oder OGL kompatibel sind. Und das ist heutzutage quasi jede... bzw. Rechner ohne schaffen es so und so nicht. Willst du denn das Ergebnis in Echtzeit anzeigen, ist das jedenfalls die beste Lösung.
Egal wie gut dein Algo ist, er wird wohl immer irgendwann ein Problem mit der Speicherbandbreite haben.
Bye, TGGC \-/