<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Tiefpassfilter]]></title><description><![CDATA[<p>Hi,<br />
ich wollte fragen, ob es irgendwo schon vorlagen gibt für eine Funktion die mir einen Tiefpassfilter von einem Bild macht?</p>
<p>Jeder Pixelwert soll mit einem durchschnittlichen Pixelwert in der rechteckigen Nachbarschaft ersetzt werden. Extents[0 ] und extents[1 ]sollen die x und y Größen spezifizieren.</p>
<p>Kann mir hier wer helfen, als Image, verwende ich QImage von Qt, im QT existiert aber keine Tiefpassfilter Funktion.</p>
<p>Danke auf jeden Fall!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/143317/tiefpassfilter</link><generator>RSS for Node</generator><lastBuildDate>Tue, 14 Jul 2026 21:42:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/143317.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Apr 2006 08:43:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Tiefpassfilter on Fri, 07 Apr 2006 08:43:48 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich wollte fragen, ob es irgendwo schon vorlagen gibt für eine Funktion die mir einen Tiefpassfilter von einem Bild macht?</p>
<p>Jeder Pixelwert soll mit einem durchschnittlichen Pixelwert in der rechteckigen Nachbarschaft ersetzt werden. Extents[0 ] und extents[1 ]sollen die x und y Größen spezifizieren.</p>
<p>Kann mir hier wer helfen, als Image, verwende ich QImage von Qt, im QT existiert aber keine Tiefpassfilter Funktion.</p>
<p>Danke auf jeden Fall!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1032398</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1032398</guid><dc:creator><![CDATA[Devil&#x27;s Daughter]]></dc:creator><pubDate>Fri, 07 Apr 2006 08:43:48 GMT</pubDate></item><item><title><![CDATA[Reply to Tiefpassfilter on Fri, 07 Apr 2006 08:46:35 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile.php?mode=viewprofile&amp;u=403" rel="nofollow">HumeSikkins</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15" rel="nofollow">C++</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum.php?f=8" rel="nofollow">Rund um die Programmierung</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic.php?t=39405" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1032402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1032402</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Fri, 07 Apr 2006 08:46:35 GMT</pubDate></item><item><title><![CDATA[Reply to Tiefpassfilter on Fri, 07 Apr 2006 10:22:30 GMT]]></title><description><![CDATA[<p>qt bietet überhaupt keine faltungs-methoden. qimage erlaubt allerdings zugriff auf die pixel, du könntest dir also selbst eine methode schreiben, die deine faltungsmatrix (den tiefpaß) kurz über das bild jagt.</p>
<p>wenn du dabei energieerhaltung und so zeug beachten musst, würd ich ne image library verwenden, die sowas unterstützt. <a href="http://kogs-www.informatik.uni-hamburg.de/~koethe/vigra/" rel="nofollow">vigra</a> kann das beispielsweise (in der doc unter convolution nachgucken).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1032496</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1032496</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Fri, 07 Apr 2006 10:22:30 GMT</pubDate></item><item><title><![CDATA[Reply to Tiefpassfilter on Mon, 10 Apr 2006 06:38:14 GMT]]></title><description><![CDATA[<p>hi,<br />
ja mein problem ist, dass ich als aufgabe hab funktionen einer library zu ersetzen...deswegen muss ich mir eine eigene funktion schreiben... im prinzip muss ich den ganzen tiefpass nur mit der lichtintensität der einzelnen pixel machen....und wie du schon sagtest...kann man ja durch qt auf die einzelnen values zugreifen.....<br />
ich bräuchte nur eine art vorlage funktion...weil ich nicht so recht weiß wie ichs anstellen soll....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034243</guid><dc:creator><![CDATA[Devil&#x27;s Daughter]]></dc:creator><pubDate>Mon, 10 Apr 2006 06:38:14 GMT</pubDate></item><item><title><![CDATA[Reply to Tiefpassfilter on Mon, 10 Apr 2006 10:13:00 GMT]]></title><description><![CDATA[<p>ich nehm mal an, bei deinem problem liegt der tiefpaß als quadratische matrix vor. gängig ist 3x3, größer geht aber auch, sollte nur ne ungerade katenlänge haben, damit er symmetrisch ist.</p>
<p>dann kannst du diese matrix einfach einmal über das bild jagen und die pixel entsprechend gewichten. wichtig ist dabei das normieren der pixel mit dem gewicht der matrix.</p>
<p>das gewicht ist die summe über die betragswerte der elemente der filter-matrix.</p>
<p>als beispiel:</p>
<pre><code class="language-cpp">QImage in_image;
QImage out_image;
...
float filter[] = {1,1,1, 0,0,0, -1,-1,-1}; // kantendetektor als beispielfilter
float gewicht; // gewicht der matrix
...
int offsets[][2] = {{-1,-1}, {0,-1}, {1,-1} ... {0,0} ... }; // die nachbarschaft offsets

for(int y = 1; y &lt; in_image.height-1; ++y) // randbehandlung: siehe kommentar
 for(int x = 1; x &lt; in_image.width-1; ++x)
 {
  int gray_value = 0; // geht nur pro layer
  for(int o = 0; o &lt; 9; ++o)
   gray_value += in_image.pixel(x + offsets[o][0], y + offsets[o][1]) * filter[o];
  out_image.setPixel(x,y, gray_value/gewicht);
 }
</code></pre>
<p>der rand wird in diesem beispiel ignoriert, bleibt also beispielsweise einfach schwarz. das ist durchaus üblich. alternativ kann der rand auch unendlich vergrößtert werden oder das gesamtbild als &quot;donut&quot; angenommen werden, also jeweils an den seiten verbunden.</p>
<p>das ganze ist im grunde recht simpel. probleme sind, wie erwähnt, die randbehandlung. außerdem muss aufgepasst werden, dass die intensität nicht aus dem gültigen bereich hinausläuft.</p>
<p>wie farbbilder behandelt werden, ist &quot;geschmackssache&quot;. entweder wird aus den farblayern ein wert gebildet, gefiltert und wieder in farbwerte zerlegt. oder der filter wird auf alle farblayer einzeln angewendet und das bild anschliessend wieder zusammengeführt. die ergebnisse können durchaus verschieden sein.</p>
<p>das ganze kann als faltung mit der impulsantwort des filters angesehen werden und ist in der bildverarbeitung gängig.<br />
allgemeiner in der signalverarbeitung wird aber lieber mit fourier transformationen rumhantiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034347</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Mon, 10 Apr 2006 10:13:00 GMT</pubDate></item><item><title><![CDATA[Reply to Tiefpassfilter on Tue, 11 Apr 2006 07:05:46 GMT]]></title><description><![CDATA[<p>kann ich die matrix freiwählen oder ist die durch irgendwelche kriterien auszuwählen???</p>
<p>das QImage, dass ich verwende hat 256 farben, aber mit der pixel abfrage bekommt man doch eh automatisch den value an einer bestimmten stelle, muss ich dann noch etwas zusätzlich machen?</p>
<p>ist für mich alles nicht so einfach, da ich noch nicht sehr lange programmiere.....<br />
also sorry, wenn ich vielleicht ein paar &quot;blöde&quot; fragen stelle....</p>
<p>aber danke auf jeden fall jetzt schon <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1034916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1034916</guid><dc:creator><![CDATA[Devil&#x27;s Daughter]]></dc:creator><pubDate>Tue, 11 Apr 2006 07:05:46 GMT</pubDate></item><item><title><![CDATA[Reply to Tiefpassfilter on Tue, 11 Apr 2006 15:51:16 GMT]]></title><description><![CDATA[<p>was meinst du mit frei wählen? die größe ist beliebig. aber wenn die matrix eine gerade spalten/zeilen anzahl hat oder die spalten- ungleich der zeilenanzahl ist, dann wird das ganze nicht mehr ausgewogen.</p>
<p>der inhalt der matrix muss natürlich einem tiefpass entsprechen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> ein tiefpaß in der bildverarbeitung ist eine glättung. dafür bietet sich ne gaußglocke an. die summe der elemente der matrix sollte dabei 1 entsprechen. da man dadurch &quot;schlecht zu lesende&quot; matrizen erhält, kann man alternativ auch einfach das ergebnis normieren. dies geschieht durch teilen des wertes durch die summe der matrixelemente.</p>
<p>also beispielsweise die matrix</p>
<pre><code>0 1 0
1 2 1
0 1 0
</code></pre>
<p>hat die summe 6. man teilt also das ergebnis des mit dieser matrix &quot;gefalteten&quot; pixels durch 6.</p>
<p>das mit den farben ist so eine sache. das Qrgb besteht nicht aus komponenten, sondern ist ein int über den gesamten rgb farbraum. also von 0 (schwarz) bis 255^3 (weiss). teilt man so einen wert einfach, so bleibt er nicht &quot;farbtreu&quot;. aus einem hellen grün könnte also beispielsweise ein dunkles rot werden und das will man eigentlich nicht.</p>
<p>wenn man das ganze komponentenweise macht, rgb vorausgesetzt, verändern sich die farben (theoretisch) nur in helligkeit und sättigung.</p>
<p>was meinst du mit 256 farben? indizierte werte durch eine farbtabelle? das ist fraglich. temporäres umwandeln in rgb wäre wohl der einfachere weg. wenn qimage das nicht eh schon automatisch macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035370</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Tue, 11 Apr 2006 15:51:16 GMT</pubDate></item><item><title><![CDATA[Reply to Tiefpassfilter on Wed, 12 Apr 2006 08:36:15 GMT]]></title><description><![CDATA[<p>das mit 256 farben, auf das komm ich nur dadurch, dass bei new qimage bei numColor= 256...aber könnten dass auch 256 graustufen sein???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035667</guid><dc:creator><![CDATA[Devil&#x27;s Daughter]]></dc:creator><pubDate>Wed, 12 Apr 2006 08:36:15 GMT</pubDate></item><item><title><![CDATA[Reply to Tiefpassfilter on Wed, 12 Apr 2006 08:34:15 GMT]]></title><description><![CDATA[<p>noch ne frage...kann ich die gsl matrix verwenden für den lowpass filter??</p>
<p>würde dass dann ca. so aussehen?</p>
<pre><code class="language-cpp">QImage* qsplatdrr::Lowpassfilter_Image () {
QImage* interMedImage = NULL;
float gewicht; 

gsl_matrix* qsplatdrrFilterMatrix = gsl_matrix_alloc(3,3);
uint Lowpass = gsl_matrix_get(qsplatdrrFilterMatrix,0,0)+gsl_matrix_get(qsplatdrrFilterMatrix,1,0)+  gsl_matrix_get(qsplatdrrFilterMatrix,0,1)+
	           gsl_matrix_get(qsplatdrrFilterMatrix,1,1)+ gsl_matrix_get(qsplatdrrFilterMatrix,2,1)+ gsl_matrix_get (qsplatdrrFilterMatrix,0,2)+
	           gsl_matrix_get(qsplatdrrFilterMatrix,2,2)+gsl_matrix_get(qsplatdrrFilterMatrix,3,0)+gsl_matrix_get(qsplatdrrFilterMatrix,0,3)+
                         gsl_matrix_get (qsplatdrrFilterMatrix,3,1)+ gsl_matrix_get(qsplatdrrFilterMatrix,1,3)+ gsl_matrix_get(qsplatdrrFilterMatrix,3,2)+
                         gsl_matrix_get(qsplatdrrFilterMatrix,2,3)+gsl_matrix_get(qsplatdrrFilterMatrix,3,3) /gewicht;

 for(uint y = 1; y &lt;  interMedImage -&gt; height-1; ++y) {
     for(uint x = 1; x &lt;   interMedImage -&gt; width-1; ++x){
	 uint value = 0; 
	 for(uint i = 0; i &lt; 9; ++i){
	     value +=  interMedImage -&gt; pixel(x + i, y + i) * Lowpass;
	     interMedImage -&gt; setPixel(x,y, value/gewicht);
	 }}}
 return (interMedImage);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1035675</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035675</guid><dc:creator><![CDATA[Devil&#x27;s Daughter]]></dc:creator><pubDate>Wed, 12 Apr 2006 08:34:15 GMT</pubDate></item><item><title><![CDATA[Reply to Tiefpassfilter on Wed, 12 Apr 2006 08:59:12 GMT]]></title><description><![CDATA[<p>Devil's Daughter schrieb:</p>
<blockquote>
<p>das mit 256 farben, auf das komm ich nur dadurch, dass bei new qimage bei numColor= 256...aber könnten dass auch 256 graustufen sein???</p>
</blockquote>
<p>kann sogar sehr gut angehen, ist das problemloseste für filter usw.</p>
<p>die gsl kenn ich leider nicht, aber welche matrix implementation du verwendest, spielt für die grundsätzlichkeit auch keine rolle. zugriff auf die pixel des bildes (qimage::pixel(x,y)) und zugriff auf die elemente der matrix (gsl_matrix_get(matrix, i,j)) sind alles, was grundsätzlich nötig ist.<br />
also kurz: ja, die gsl matrix sollte es tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035729</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035729</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 12 Apr 2006 08:59:12 GMT</pubDate></item><item><title><![CDATA[Reply to Tiefpassfilter on Wed, 12 Apr 2006 09:13:37 GMT]]></title><description><![CDATA[<p>super danke!</p>
<p>irgendwie ist mir heute ein bisserl der knopf aufgegangen wie das ganze funktioniert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>nur eine frage..wie bekomm ich diese fehlermeldungen noch weg..</p>
<p>for(uint y = 1; y &lt; interMedImage -&gt; height-1; ++y)</p>
<p>error: invalid use of member (did you forget the `&amp;' ?)</p>
<p>for(uint x = 1; x &lt; interMedImage -&gt; width-1; ++x)</p>
<p>error: invalid use of member (did you forget the `&amp;' ?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1035746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035746</guid><dc:creator><![CDATA[Devil&#x27;s Daughter]]></dc:creator><pubDate>Wed, 12 Apr 2006 09:13:37 GMT</pubDate></item><item><title><![CDATA[Reply to Tiefpassfilter on Wed, 12 Apr 2006 09:48:02 GMT]]></title><description><![CDATA[<p>du initialisierst dein interMedImage nicht:</p>
<pre><code class="language-cpp">QImage* interMedImage = NULL;
</code></pre>
<p>da fehlt entweder eine zuweisung oder ein new. also beispielsweise</p>
<pre><code class="language-cpp">QImage* interMedImage = new QImage(640,480,Qt::IrgendEinFarbraum);
</code></pre>
<p>aso, das problem ist ein anderes ^^ die zuweisung stört den compiler nicht weiter, das würd erst nen segfault zur laufzeit geben.</p>
<p>width und height sind private membervariablen. der zugriff erfolgt über methoden</p>
<pre><code class="language-cpp">interMedImage-&gt;width; // member variable, so nicht
interMedImage-&gt;width(); // publich method, so gehts
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1035771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1035771</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Wed, 12 Apr 2006 09:48:02 GMT</pubDate></item></channel></rss>