<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>OpenCV &#8211; ChatGPT, KI und Software auf dem Raspberry Pi</title>
	<atom:link href="https://progpi.de/category/opencv/feed/" rel="self" type="application/rss+xml" />
	<link>https://progpi.de</link>
	<description>ChatGPT, KI und die Zukunft</description>
	<lastBuildDate>Mon, 24 Oct 2022 11:12:20 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://progpi.de/wp-content/uploads/2019/01/cropped-ProgPi_512-32x32.png</url>
	<title>OpenCV &#8211; ChatGPT, KI und Software auf dem Raspberry Pi</title>
	<link>https://progpi.de</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>GIMP und OpenCV</title>
		<link>https://progpi.de/gimp-und-opencv/</link>
		
		<dc:creator><![CDATA[Harald Schmidt]]></dc:creator>
		<pubDate>Sun, 09 Aug 2020 04:43:10 +0000</pubDate>
				<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[Basiswissen]]></category>
		<guid isPermaLink="false">https://progpi.de/?p=3394</guid>

					<description><![CDATA[<p>GIMP und OpenCV dienen völlig verschiedenen Zwecken. Wer sich aber mit Histogrammen bei GIMP auskennt, wird es leicher haben ähnliche Operationen mit OpenCV zu programmieren und automatisch ablaufen zu lassen.</p>
<p>Der Beitrag <a rel="nofollow" href="https://progpi.de/gimp-und-opencv/">GIMP und OpenCV</a> erschien zuerst auf <a rel="nofollow" href="https://progpi.de">ChatGPT, KI und Software auf dem Raspberry Pi</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3394" class="elementor elementor-3394">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-7ba35688 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="7ba35688" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-182358b9" data-id="182358b9" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-5f397b26 elementor-widget elementor-widget-text-editor" data-id="5f397b26" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p></p>
<p>Eigentlich haben <a href="https://de.wikipedia.org/wiki/GIMP" target="_blank" rel="noopener">GIMP</a> und <a href="https://de.wikipedia.org/wiki/OpenCV" target="_blank" rel="noopener">OpenCV</a> nicht so viel gemeinsam. Denn GIMP dient der Bildbearbeitung, während OpenCV ein mächtiges Werkzeug zur Bildverarbeitung ist. Aber wer sich gut mit GIMP (oder auch Photoshop) auskennt, wird es einfacher haben einige Konzepte von OpenCV zu verstehen. Die nachfolgenden Screenshots sind mit GIMP 2.10.8 auf einem <a href="https://progpi.de/raspberry-pi-4/">Raspberry Pi 4</a> entstanden. Beginnen wir mit zwei beliebten Operationen: Kontrastspreizung und Gammakorrektur. Beide Operationen verändern das Histogramm:</p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>
<p></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-416b4dc elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="416b4dc" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-03d4584" data-id="03d4584" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-09115d3 elementor-widget elementor-widget-image" data-id="09115d3" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
												<figure class="wp-caption">
										<img fetchpriority="high" decoding="async" width="768" height="328" src="https://progpi.de/wp-content/uploads/2020/08/Gimp_Bild_dunkel_lineare_Kurve-768x328.png" class="attachment-medium_large size-medium_large wp-image-3408" alt="GIMP Kurvenwerkzeug" srcset="https://progpi.de/wp-content/uploads/2020/08/Gimp_Bild_dunkel_lineare_Kurve-768x328.png 768w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Bild_dunkel_lineare_Kurve-300x128.png 300w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Bild_dunkel_lineare_Kurve-1024x437.png 1024w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Bild_dunkel_lineare_Kurve.png 1336w" sizes="(max-width: 768px) 100vw, 768px" />											<figcaption class="widget-image-caption wp-caption-text">Ein dunkles Bild und dessen Histogramm</figcaption>
										</figure>
									</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-a80b79f elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a80b79f" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-825a988" data-id="825a988" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-ff1dcda elementor-widget elementor-widget-text-editor" data-id="ff1dcda" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In der Abbildung sehen Sie links das recht dunkle Originalbild (ein digitalisiertes Dia) und rechts einen GIMP-Dialog. Mit dem  Werkzeug „Kurven“ können die Helligkeitswerte im Histogramm neu verteilt werden (Farben/Kurven im Menü). Wenn Sie dabei eine Gerade sehen, haben Sie in der Vorschau noch den Originalzustand. Wenn Sie die Gerade am oberen rechten Punkt anfassen und nach links verschieben, bekommen Sie eine lineare Kontrastspreizung. Eine Durchbiegung der Kurve nach oben führt ebenso zu einem helleren und kontrastverstärkten Bild:</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-dbe247b elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="dbe247b" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1abbf80" data-id="1abbf80" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-55d1ae5 elementor-widget elementor-widget-image" data-id="55d1ae5" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
												<figure class="wp-caption">
										<img decoding="async" width="768" height="328" src="https://progpi.de/wp-content/uploads/2020/08/Gimp_Gammakorrektur_Kurvenwerkzeug-768x328.png" class="attachment-medium_large size-medium_large wp-image-3403" alt="Umverteilung der Histogrammwerte" srcset="https://progpi.de/wp-content/uploads/2020/08/Gimp_Gammakorrektur_Kurvenwerkzeug-768x328.png 768w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Gammakorrektur_Kurvenwerkzeug-300x128.png 300w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Gammakorrektur_Kurvenwerkzeug-1024x437.png 1024w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Gammakorrektur_Kurvenwerkzeug.png 1336w" sizes="(max-width: 768px) 100vw, 768px" />											<figcaption class="widget-image-caption wp-caption-text">Eine Gammakorrektur hellt dunkle Bereiche auf</figcaption>
										</figure>
									</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-29a7cb7 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="29a7cb7" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f4815dd" data-id="f4815dd" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-c59de51 elementor-widget elementor-widget-text-editor" data-id="c59de51" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Da Sie hier die Kurvenform manuell festlegen, handelt es sich streng genommen nicht um eine Gammakorrektur. Aber auf alle Fälle gibt es (zumindest intern in GIMP) eine Transformationstabelle die pro Farbkanal 256 neue Werte genau eines Farbkanals definiert. Wenn Sie im GIMP-Dialog <b>Farbkurven korrigieren</b> „Kanal Wert“ sehen, dann werden dabei alle drei Farbkanäle R,G,B zugleich verändert. Sie können dort z.B. auch den Kanal „grün“ auswählen und somit nur eine Farbkomponente verändern. Im Menü unter „Farben/Automatisch“ bietet GIMP „Kontrastspreizung“ sowie „Kontrastspreizung (HSV)“ an.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-488d906 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="488d906" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4e9eb8f" data-id="4e9eb8f" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-72c06d0 elementor-widget elementor-widget-image" data-id="72c06d0" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
												<figure class="wp-caption">
										<img decoding="async" width="768" height="335" src="https://progpi.de/wp-content/uploads/2020/08/Gimp_Farben_Automatisch-768x335.png" class="attachment-medium_large size-medium_large wp-image-3404" alt="Kontrastspreizung mit GIMP" srcset="https://progpi.de/wp-content/uploads/2020/08/Gimp_Farben_Automatisch-768x335.png 768w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Farben_Automatisch-300x131.png 300w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Farben_Automatisch.png 981w" sizes="(max-width: 768px) 100vw, 768px" />											<figcaption class="widget-image-caption wp-caption-text">Operationen im GIMP Menü</figcaption>
										</figure>
									</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-a22ef60 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a22ef60" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b6daae2" data-id="b6daae2" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-126cc5b elementor-widget elementor-widget-text-editor" data-id="126cc5b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In beiden Fällen wird das Histogramm gestreckt (GIMP normiert allgemeingültig auf 0.0 bis 1.0 als Wertebereich) und man erhellt so oft ein schöneres Bild. Bei einem 24 Bit Farbbild hat jeder Farbkanal 8 Bit, was 256 Stufen der Transformationstabelle entspricht. Im C++ Interface von OpenCV kann die Transformationstabelle für einen 8-Bit Kanal so programmiert werden:</p>
<pre>unsigned char lut[256];<br />for (int i = 0; i &lt; 256; i++) // Build look up table<br />{<br /> lut[i] = saturate_cast(pow((float)(i / 255.0), gamma) * 255.0f);<br />}</pre>
<p>Da hier<strong> pow(i/255)</strong> mit<strong> gamma</strong> als Exponent verwendet wird, ist es eine Gammakorrektur. Und exemplarisch kann das Resultat für einen Kanal (exemplarisch aus RGB) so aussehen:</p>
<p><span style="color: #0000ff;">lut[ 11]= 13  delta= 2</span><br /><span style="color: #0000ff;">lut[ 30]= 39 delta= 9 </span><br /><span style="color: #0000ff;">lut[115]=140 delta=25</span><br /><span style="color: #0000ff;">lut[128]=153 delta=25 </span><br /><span style="color: #0000ff;">lut[180]=197 delta=17 </span><br /><span style="color: #0000ff;">lut[253]=254 delta= 1</span></p>
<p>Dabei entspricht i der horizontalen Achse im Histogramm und lut[i] der vertikalen Achse. Nach Anwendung dieser Tabelle auf mindestens einen Farbkanal kommt es zu einer Umverteilung im Histogramm, wobei es immer einen Punkt der maximalen Kurvendurchbiegung (maximales delta) gibt. Bei einer reinen Aufhellung ist delta positiv und konstant (Die Gerade wäre nach oben verschoben). Ein zu hoher Wert für delta bzw. lut[i] kann zu unschönen Überstrahlungen im Bild führen. Die Anwendung der LookUp Tabelle lut[i] sieht so aus:</p>
<pre>MatIterator_ it, end;<br />for (it = out.begin(), end = out.end(); it != end; it++)<br />{<br /> (*it)[0] = lut[((*it)[0])]; // blue<br /> (*it)[1] = lut[((*it)[1])]; // green<br /> (*it)[2] = lut[((*it)[2])]; // red<br />}</pre>
<p>Alle drei Komponenten der OpenCV Matrix out bekommen so neue Werte.<br />Bei einer reinen Kontrastverstärkung ist lut[i] linear und damit eine reine Multiplikation (die Steigung der Gerade wird angehoben). Eine rein lineare Kontrastspreizung kann man in OpenCV allerdings auch einfacher bekommen :</p>
<pre>Mat imgNorm; // für das kontrastverstärkte Bild<br />normalize(img3x8.clone(),imgNorm,0.0,255, NORM_MINMAX); <br />destname = outpath24s + nrbase + "_NormMinMax.jpg"; <br />imwrite(destname, imgNorm);</pre>
<p>Dabei ist img3x8 das farbige JPEG-Eingangsbild und imgNorm wird als kontrastgespreiztes neues Bild gespeichert. Bei der grünen Schlange handelt es sich übrigens um ein unterbelichtetes Dia, das per Kamerascanner digitalisiert wurde. In GIMP sieht die lineare Kontrastspreizung so aus:</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-eb86fee elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="eb86fee" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1f2c4dd" data-id="1f2c4dd" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-c11b6ab elementor-widget elementor-widget-image" data-id="c11b6ab" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
												<figure class="wp-caption">
										<img loading="lazy" decoding="async" width="768" height="555" src="https://progpi.de/wp-content/uploads/2020/08/Gimp_Kontrastspreizung_linear_Schlange-768x555.png" class="attachment-medium_large size-medium_large wp-image-3399" alt="Dehnung des Histogramms" srcset="https://progpi.de/wp-content/uploads/2020/08/Gimp_Kontrastspreizung_linear_Schlange-768x555.png 768w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Kontrastspreizung_linear_Schlange-300x217.png 300w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Kontrastspreizung_linear_Schlange-1024x740.png 1024w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Kontrastspreizung_linear_Schlange.png 1209w" sizes="(max-width: 768px) 100vw, 768px" />											<figcaption class="widget-image-caption wp-caption-text">Lineare Kontrastspreizung mit GIMP</figcaption>
										</figure>
									</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-a3cbdec elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="a3cbdec" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-20c7c9d" data-id="20c7c9d" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-d5cbd1d elementor-widget elementor-widget-text-editor" data-id="d5cbd1d" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Nach der Kontrastspreizung liegt der hellste Histogrammpunkt nicht mehr unter 128 sondern über 250. Im Histogramm sind durch die Kontrastspreizung Lücken entstanden. Das Bild ist jetzt signifikant heller – und auch heller als das Dia wirkt. Aber Dias werden meist im abgedunkelten Raum vorgeführt, was eine Dunkeladaption der Augen und damit eine bessere Wahrnehmung dunkler Bildpartien bewirkt. In Helligkeit und Kontrast ausgeglichen wirkt solch ein Bild erst nach einer zusätzlichen Gammakorrektur:</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-c65c326 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="c65c326" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-bc0ac86" data-id="bc0ac86" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-2e6f15f elementor-widget elementor-widget-image" data-id="2e6f15f" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
												<figure class="wp-caption">
										<img loading="lazy" decoding="async" width="768" height="460" src="https://progpi.de/wp-content/uploads/2020/08/Gimp_Histogramm_linear_log-768x460.png" class="attachment-medium_large size-medium_large wp-image-3405" alt="Bildaufhellung durch Gammakorrektur" srcset="https://progpi.de/wp-content/uploads/2020/08/Gimp_Histogramm_linear_log-768x460.png 768w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Histogramm_linear_log-300x180.png 300w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Histogramm_linear_log-1024x613.png 1024w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Histogramm_linear_log.png 1422w" sizes="(max-width: 768px) 100vw, 768px" />											<figcaption class="widget-image-caption wp-caption-text">Gammakorrektur bei schon gespreiztem Histogramm</figcaption>
										</figure>
									</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-879177f elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="879177f" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-00345ab" data-id="00345ab" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-7dd52ec elementor-widget elementor-widget-text-editor" data-id="7dd52ec" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Beachten Sie bitte auch, daß sich seltener vorkommende Werte nur in einem logarithmischen Histogramm erkennen lassen. Beachtet man das nicht, besteht die Gefahr bestimmte Bildteile auf die Extremwerte 0 oder 255 zu setzen. Manchmal ist dieser Effekt aber gewollt, denn übersteigerte Kontraste und satte Farben können zu einem spannenden Bild führen:</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-44c1f59 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="44c1f59" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-16d29cc" data-id="16d29cc" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-fdc33b2 elementor-widget elementor-widget-image" data-id="fdc33b2" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
												<figure class="wp-caption">
										<img loading="lazy" decoding="async" width="768" height="328" src="https://progpi.de/wp-content/uploads/2020/08/Gimp_kräftige_Farben_hoher_Kontrast-768x328.png" class="attachment-medium_large size-medium_large wp-image-3407" alt="Kontrastanhebung" srcset="https://progpi.de/wp-content/uploads/2020/08/Gimp_kräftige_Farben_hoher_Kontrast-768x328.png 768w, https://progpi.de/wp-content/uploads/2020/08/Gimp_kräftige_Farben_hoher_Kontrast-300x128.png 300w, https://progpi.de/wp-content/uploads/2020/08/Gimp_kräftige_Farben_hoher_Kontrast-1024x437.png 1024w, https://progpi.de/wp-content/uploads/2020/08/Gimp_kräftige_Farben_hoher_Kontrast.png 1336w" sizes="(max-width: 768px) 100vw, 768px" />											<figcaption class="widget-image-caption wp-caption-text">Kontrastanhebung über eine S-förmige Kurve</figcaption>
										</figure>
									</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-7bfd41c elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="7bfd41c" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-78716c5" data-id="78716c5" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-e402c94 elementor-widget elementor-widget-text-editor" data-id="e402c94" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Solch ein Effekt wird erreicht, indem man durch eine S-förmige Histogrammkurve dunkle und helle Farbtöne fast in die Sättigung abgleiten lässt. Sie sehen an diesem Beispiel, daß es optimale Bilder im Rahmen einer Bildbearbeitung eigentlich nicht gibt. Wie beim Farbempfinden können die Ansichten über „Schönheit“ je nach Betrachter recht unterschiedlich ausfallen. Und nicht jedes Motiv wirkt bei überhöhten Kontrasten gut. Was man bei der Filmemulsion die Gradationskurve nennt, wird heute in der Digitalkamera durch das Belichtungsprogramm vorgegeben.</p>
<p>Bei manchen Bildern ist eine <strong>Gammakorrektur</strong> der einzige Weg, um aus zu dunklen Bildteilen noch etwas Information herauszuholen:</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-9521b3c elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="9521b3c" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-52f1497" data-id="52f1497" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-af9c02b elementor-widget elementor-widget-image" data-id="af9c02b" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
												<figure class="wp-caption">
										<img loading="lazy" decoding="async" width="768" height="441" src="https://progpi.de/wp-content/uploads/2020/08/Gimp_Gamma_Brücke_dunkel-768x441.png" class="attachment-medium_large size-medium_large wp-image-3402" alt="Aufhellung durch Gammakorrektur" srcset="https://progpi.de/wp-content/uploads/2020/08/Gimp_Gamma_Brücke_dunkel-768x441.png 768w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Gamma_Brücke_dunkel-300x172.png 300w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Gamma_Brücke_dunkel-1024x588.png 1024w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Gamma_Brücke_dunkel-1536x882.png 1536w, https://progpi.de/wp-content/uploads/2020/08/Gimp_Gamma_Brücke_dunkel.png 1609w" sizes="(max-width: 768px) 100vw, 768px" />											<figcaption class="widget-image-caption wp-caption-text">Die Gammakorrektur macht Unsichtbares sichtbar</figcaption>
										</figure>
									</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-7cdaa50 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="7cdaa50" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e04571b" data-id="e04571b" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-ded867e elementor-widget elementor-widget-text-editor" data-id="ded867e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Das Originalbild ist hier in der rechten oberen Ecke eingeblendet und es ist dort nur ein kleiner Teil des Brückenstegs erkennbar. Das gilt bei diesem Bild auch dann, wenn Sie eine lineare Kontrastspreizung in GIMP oder OpenCV ausprobieren. Der einzige Weg um die dunkleren Bildteile stärker hervortreten zu lassen (ohne Überstrahlungen zu riskieren) ist eine Gammakorrektur. <strong>In OpenCV kann man diesen Vorgang auch automatisch für beliebige Bilderstapel durchführen</strong> – Ein Vorgang der in GIMP nur manuell durchführbar und auch mit Script-Fu nicht so einfach automatisierbar ist.<br />Basis ist auf jeden Fall eine gut programmierte Histogrammauswertung für alle Farbkanäle. Eine Speicherung aller Transformationstabellen lut[i] ermöglicht die spätere Anwendung auf Bilder in höherer Auflösung.</p>
<p>Die mühsame manuelle Einstellung in GIMP hat aber noch einen Nachteil: Man sieht immer nur <b>ein</b> Bild und kann nicht die Wirkung unterschiedlicher Bildvarianten in Bezug auf Farbe, Kontrast und Helligkeit  miteinander vergleichen. Die Umsetzung erfolgt dreistufig:</p>
<ol>
<li><span style="color: #000080;">Ein Generatorprogramm verarbeitet den Bilderstapel und erzeugt mehrere Bildvarianten pro Bild<br /></span></li>
<li><span style="color: #000080;">Ein Viewer zeigt die beiden Bildvarianten und zusätzlich ein neues, speicherbares Mischbild an  </span></li>
<li><span style="color: #000080;">Die individuell pro Bild gespeicherten Transformationstabellen und Parameter werden automatisch auf den gesamten Bilderstapel bei voller Auflösung angewandt. (Batchverarbeitung, ohne manuellen Eingriff) <br /></span></li>
</ol>
<p>In OpenCV sieht solch ein Mixer (<span style="color: #000080;">also Stufe2</span>) für Bilder so aus:</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-e43b8ac elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e43b8ac" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d960437" data-id="d960437" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-561aad0 elementor-widget elementor-widget-image" data-id="561aad0" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
												<figure class="wp-caption">
										<img loading="lazy" decoding="async" width="768" height="561" src="https://progpi.de/wp-content/uploads/2020/08/OpenCV_Mixer_gamma_whitebalance-768x561.png" class="attachment-medium_large size-medium_large wp-image-3400" alt="Gewichtete Mischung von Bildern" srcset="https://progpi.de/wp-content/uploads/2020/08/OpenCV_Mixer_gamma_whitebalance-768x561.png 768w, https://progpi.de/wp-content/uploads/2020/08/OpenCV_Mixer_gamma_whitebalance-300x219.png 300w, https://progpi.de/wp-content/uploads/2020/08/OpenCV_Mixer_gamma_whitebalance-1024x748.png 1024w, https://progpi.de/wp-content/uploads/2020/08/OpenCV_Mixer_gamma_whitebalance.png 1485w" sizes="(max-width: 768px) 100vw, 768px" />											<figcaption class="widget-image-caption wp-caption-text">OpenCV-Mixer mit Farb-Histogrammen</figcaption>
										</figure>
									</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-e53a689 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="e53a689" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1a99e93" data-id="1a99e93" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-eb79620 elementor-widget elementor-widget-text-editor" data-id="eb79620" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Die oberen beiden Bilder ergeben sich aus der unterschiedlichen Verarbeitung bezüglich Gammakorrektur und Weissabgleich. Das mittige untere Mischbild wird nach dem Prozentsatz des Trackbars zusammengesetzt. Beim hier abgebildeten Lama hat die Gammakorrektur (Bild links oben) die gewünschte Aufhellung des Halses bewirkt. Allerdings wird dabei auch das Kamerarauschen auf dem dunklen Hintergrund verstärkt. Das Bild rechts oben ist ein JPEG ohne Gammakorrektur. Der beste Kompromiss ist hier das Mischbild. Die beiden Histogramme zeigen die jeweilige Verteilung der Grauwerte und Farben mit 50% logarithmischer Darstellung. Im linken Histogramm ist das farbige Sensorrauschen für den dunklen Bildhintergrund gut erkennbar. Für die Steuerung gibt es einen eigenen Dialog mit dem alle Bilder verarbeitet werden können. Der OpenCV-Mixer kann mit herunterskalierten Bildern arbeiten, da alle abgespeicherten Transformationstabellen sowie das Mischungsverhältnis in Stufe 3 verwendet werden.  So entsteht ein kompletter Workflow für Digitalbilder / gescannte Dias oder Negative.</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>Der Beitrag <a rel="nofollow" href="https://progpi.de/gimp-und-opencv/">GIMP und OpenCV</a> erschien zuerst auf <a rel="nofollow" href="https://progpi.de">ChatGPT, KI und Software auf dem Raspberry Pi</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>OpenCV 4.0 und 3.44</title>
		<link>https://progpi.de/opencv-4-0-und-3-44/</link>
		
		<dc:creator><![CDATA[Harald Schmidt]]></dc:creator>
		<pubDate>Mon, 14 Jan 2019 10:49:56 +0000</pubDate>
				<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[Bildverarbeitung]]></category>
		<category><![CDATA[CMake]]></category>
		<category><![CDATA[CMakeGUI]]></category>
		<category><![CDATA[Mustererkennung]]></category>
		<category><![CDATA[Objekterkennung]]></category>
		<guid isPermaLink="false">https://progpi.de/?p=385</guid>

					<description><![CDATA[<p>OpenCV ist eine quelltextoffene Software für Bildverarbeitung und Mustererkennung. Exemplarisch kann damit eine Erkennung von Ziffernsymbolen erfolgen (ab Seite 722 im Buch), wie es das Bild zeigt. Die Kamera kann über USB oder über den CSI-Port mit dem Raspberry Pi verbunden sein. Die gesamten OpenCV Quelltexte haben einen Umfang von ca. 80 MB und werden [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="https://progpi.de/opencv-4-0-und-3-44/">OpenCV 4.0 und 3.44</a> erschien zuerst auf <a rel="nofollow" href="https://progpi.de">ChatGPT, KI und Software auf dem Raspberry Pi</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>OpenCV ist eine quelltextoffene Software für Bildverarbeitung und Mustererkennung. Exemplarisch kann damit eine Erkennung von Ziffernsymbolen erfolgen (ab Seite 722 im <a href="https://www.hanser-kundencenter.de/fachbuch/artikel/9783446453425" target="_blank" rel="noopener"><strong>Buch</strong></a>), wie es das Bild zeigt. Die Kamera kann über USB oder über den CSI-Port mit dem Raspberry Pi verbunden sein. Die gesamten OpenCV Quelltexte haben einen Umfang von ca. 80 MB und werden mit CMakeGUI in ausführbaren Code umgewandelt. In meinem Buch wird dabei noch von der OpenCV Version 3.3.0 ausgegangen. </p>



<p>Zugleich folgen die ausführbaren Dateien nun einer anderen Namenskonvention, die Sie hier im Vergleich sehen:</p>



<ul class="wp-block-list"><li>OCV330_gtk/bin/cpp-example-convexhull</li><li>OCV344_gtk/bin/example_cpp_convexhull</li></ul>



<p>In der aktuellen Version von ProgPi.zip (21.1.2019) wird dieser Umstand berücksichtigt und beide Namenskonventionen werden inzwischen mit dem Skript <strong><em>opencvgui.sh</em></strong> gefunden. Die Datei <em><strong>opencvgui.cfg</strong></em> musste dafür allerdings auch geändert werden.</p>



<p>Wenn Sie die Datei <strong><em>ocv_version.cfg</em></strong> entsprechend anpassen, funktioniert das Skript <em><strong>ocv_make.sh</strong></em> wie gehabt.   </p>



<p>Die Dokumentation kann inzwischen in fertiger Form von folgender Webseite heruntergeladen werden:</p>



<p><a href="https://opencv.org/opencv-4-0-0.html" target="_blank" rel="noopener">https://opencv.org/opencv-4-0-0.html</a></p>



<p>Das Skript <strong><em>opencv_doku.sh</em></strong> ist damit nicht mehr notwendig und funktioniert auch nicht mehr, weil die Quellen der Dokumentation nicht mehr wie früher abgelegt sind:</p>



<p><a href="https://docs.opencv.org/3.4.4/" target="_blank" rel="noopener">https://docs.opencv.org/3.4.4/</a></p>



<p><a href="https://docs.opencv.org/4.0.0/" target="_blank" rel="noopener">https://docs.opencv.org/4.0.0/</a></p>



<p>Beispielbilder zu OpenCV finden Sie auf dieser Webseite in der <a href="https://progpi.de/galerie/"><strong>Galerie</strong></a>.</p>
<p>Der Beitrag <a rel="nofollow" href="https://progpi.de/opencv-4-0-und-3-44/">OpenCV 4.0 und 3.44</a> erschien zuerst auf <a rel="nofollow" href="https://progpi.de">ChatGPT, KI und Software auf dem Raspberry Pi</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
