Revision [11049]

This is an old revision of OctaveBildverarbeitung made by ToBo on 2010-07-27 02:28:09.

 

Einfache Bildbearbeitungsoperationen mit Octave


Octave-Version
----------------------------------------------------------------------
GNU Octave Version 3.0.5
GNU Octave License: GNU General Public License
Operating System: Linux 2.6.31-21-generic #59-Ubuntu SMP Wed Mar 24 07:28:56 UTC 2010 i686
----------------------------------------------------------------------


Bild laden
I = imread('kanu2010.jpg');



whos I
ans =

   375   500     3



View Images:
show.m
figure(1);
subplot(1,2,1);
image(I/4);
axis off equal tight;
title('Original');
subplot(1,2,2);
image(J/4);
axis off equal tight;
title('Bearbeitet');


alternativ besser mit imshow():
show.m
figure(1);
subplot(1,2,1);
imshow(I/4);
title('Original');
subplot(1,2,2);
imshow(J/4);
title('Bearbeitet');




Histogramm


[h,b,c] = size(I);
v = reshape(I, h*b*c,1,1);
figure(2);
hist(v,256/5)


image




Beispiel 1

Helligkei -50
Kontrast +30 %
J=(I-50)*1.3;

image


Beispiel 2


Grün um 50 % reduzieren
J=I;J(:,:,2)=J(:,:,2)/2;


image


Beispiel 3


Graustufenbild berechnen
J=fix(I); % uint8 in real umwandel
J(:,:,1)=(J(:,:,1)+J(:,:,2)+J(:,:,3))/3;  % Mittelwert aus allen Kanälen
J(:,:,2)=J(:,:,1); % Kanal kopieren
J(:,:,3)=J(:,:,1); % Kanal kopieren

image


Beispiel 4


Kanal Grün auf Kanal Rot kopieren (Grün und Blau bleibt unverändert)
J=I;J(:,:,1)=I(:,:,2)


image

Beispiel 5


Kanal Blau und Grün tauschen ;)
J=I;J(:,:,2)=I(:,:,3);J(:,:,3)=I(:,:,2);


image


Beispiel 6


Bild mit einem einfachen Tiefpass filtern, unscharf machen ;)
J=I; for c=1:3; J(:,:,c) = filter2(ones(5,5)/25,fix(I(:,:,c)));end


image


Beispiel 7


Kanten hervorheben, dem Bild einen Eindruck der Schärfe verleihen

Oder bildverarbeitungsmathematisch ausgedrückt: Die Kanten detektieren, diese mit einem Faktor (hier 1.5) multiplizieren und zum Originalbild addieren.

Die Kanten wurden hier mit dem Tiefpass aus Beispiel 6 detektiert, indem das tiefpassgefilterte Bild von dem Original subtrachiert wurde. Das ergibt ein hochpass-gefiltertes Bild, also die Kanten. Wir drücken auch hier ein Auge zu, dass es sich um ein moving avarage filter handelt.

Ganz deutlich ist der Effekt unten, rechts im Bild am Wasser zu sehen. Es wirkt schärfer und glänzender. Wer das nicht sieht, dann den Faktor (hier 1.5) hochdrehen, näher an den Bildschirm treten oder zum Augenarzt gehen. ;-)

J=I; for c=1:3; J(:,:,c) = filter2(ones(5,5)/25,fix(I(:,:,c)));end;J=(I-J)*1.5;whos J; J=I+J;


image


Beispiel 8

I = imread('andreas.jpg');

Graustufenbild berechnen
J=fix(I); % uint8 in real umwandeln
J(:,:,1)=(J(:,:,1)+J(:,:,2)+J(:,:,3))/3;  % Mittelwert aus allen Kanälen
J(:,:,2)=J(:,:,1); % Kanal kopieren
J(:,:,3)=J(:,:,1); % Kanal kopieren


J=((K+77)>128)*255;  % SW-Bild erzeugen


image

Weißanteil berechnen
[n,m]=size(J);length(find(J>128))/(n*m)*100


Weißanteil: 78 %


Beispiel 9


Spielerei! schwarz, rot, gold

J(:,:,1)=((K(:,:,1)+77)>128)*255;show;
J(:,:,2)=((K(:,:,2)+60)>128)*255;show;
J(:,:,3)=((K(:,:,3)+47)>128)*255;show;


image


Beispiel 10


Special effects ;)
J=-sin(I/25)*128+128;


image


Beispiel 11


Edge detector according to an algorithm by Rachid Deriche.
for k=1:3; J(:,:,k)=deriche(I(:,:,k),2,0)*4;end ;


image








Siehe auch
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki