// Projektaufgaben zur digitalen Bildverarbeitung // 1.) Histogrammausgleich bei Farbbildern // Matthias Jauernig, Carsten Haupt - 2005 // lade Farbbild in die Bilder 1 2 3 ein (1=R, 2=G, 3=B) psize graymax; infpsize nx ny +1+graymax=u; +2*u=v; pinprgb ^^ 1 2 3; mon 1; // nach HSI wandeln => HSI in Bildern 5 6 7 darstellen RGBHSI 1 2 3 5 6 7 //künstl. Kontrastverschlechterung //scal 0 3 1; scal 0 3 2; scal 0 3 3; //scal 0 3 5; scal 0 3 6; scal 0 3 7; sout ^Originalbild als RGB und HSI^; plf pause // für jedes Bild Histogramm ablegen in den Registern areg bis areg+graymax for i 1 7 ifn i=4 then tempreg v areg; rclr areg v; // pzahl gibt für die Bildgrößen X und Y den Wert X*Y an +nx+1*{ny+1}=pzahl; // Histogramm in Register ab areg erstellen wloop bild x y +(x,y,i)=grw; +#{areg+grw}+1 = #{areg+grw}; end bild // grwsum speichert die Summe aller Grauwerte von 0 bis zum eben betrachteten clr grwsum // Ausgleich des Histogramms in areg+u bis areg+u+graymax for grwalt 0 graymax +grwsum + #{areg+grwalt}=grwsum +graymax*grwsum/pzahl=#{areg+u+grwalt} endfor // Transformation des aktuellen Bildes i in Bild i+8 wloop trans x y +(x,y,i)=grwalt; +#{areg+u+grwalt}=(x,y,i+8); end trans endif endfor sout ^Original-Bilder RGB und HSI mit Histogrammausgleich transformiert^; plf pause // Ausgangsbild showrgb 1 2 3 sout ^Ausgangsbild^; plf pause // Bild mit Histogrammausgleich der RGB-Bilder poutrgb ^histrgb.bmp^ 9 10 11 showrgb 9 10 11 sout ^RGB-Bild mit Histogrammausgleich der RGB-Bilder^; plf pause // Bild mit Histogrammausgleich der R-Komponente von RGB poutrgb ^histrgb_r.bmp^ 9 2 3 showrgb 9 2 3 sout ^RGB-Bild mit Histogrammausgleich der R-Komponente von RGB^; plf pause // Bild mit Histogrammausgleich der G-Komponente von RGB poutrgb ^histrgb_g.bmp^ 1 10 3 showrgb 1 10 3 sout ^RGB-Bild mit Histogrammausgleich der G-Komponente von RGB^; plf pause // Bild mit Histogrammausgleich der B-Komponente von RGB poutrgb ^histrgb_b.bmp^ 1 2 11 showrgb 1 2 11 sout ^RGB-Bild mit Histogrammausgleich der B-Komponente von RGB^; plf pause // Bild mit Histogrammausgleich der HSI-Bilder HSIRGB 13 14 15 8 12 16 poutrgb ^histhsi.bmp^ 8 12 16 showrgb 8 12 16 sout ^RGB-Bild mit Histogrammausgleich der HSI-Bilder^; plf pause // Bild mit Histogrammausgleich der H-Komponente von HSI HSIRGB 13 6 7 8 12 16 poutrgb ^histhsi_hue.bmp^ 8 12 16 showrgb 8 12 16 sout ^RGB-Bild mit Histogrammausgleich der H-Komponente von HSI^; plf pause // Bild mit Histogrammausgleich der S-Komponente von HSI HSIRGB 5 14 7 8 12 16 poutrgb ^histhsi_sat.bmp^ 8 12 16 showrgb 8 12 16 sout ^RGB-Bild mit Histogrammausgleich der S-Komponente von HSI^; plf pause // Bild mit Histogrammausgleich der I-Komponente von HSI HSIRGB 5 6 15 8 12 16 poutrgb ^histhsi_int.bmp^ 8 12 16 showrgb 8 12 16 sout ^RGB-Bild mit Histogrammausgleich der I-Komponente von HSI^; plf pause showrgb