Digital Signal Behandling

Jeg har på AU-HIH haft undervisning i DSB, hvor vi har beskæftiget os med forskellige emner, bl.a. filter design og billedbehandling. Her på siden vil jeg skrevet lidt om emnerne.

* [[dsb:filtre]|Digitale Filtre]]

* [[dsb:billedbehandling]|Digital Billedbehandling]]

* [[dsb:fejl]|Find en fejl]]

Digital Billed Behandling

Billedbehandling i denne sammenhæng, er billedbehandling på pixel niveau, dvs. her analyses udvalgte pixels enkeltvis, og ikke med et ”moderne” billedbehandlings værktøj. Her unde er beskrevet nogle af de emner vi har arbejdet med.

Elia

Elia er ikke et emne i billedbehandlingen, men derimod er emnet her at detektere hvornår der er ild i Elia. Der kan læses mere om kunstværket Elia her: [[1]] Opgaven går ud på, at man ud fra nogle billeder af kunstværket, skal finde ud af om der er ild i den eller ej!

Det lykkedes første gang den. 5. februar 2007 at få et billede af Elia med ild i. Dette blev opnår gennem en Matlab rutine der indhentede billeder af skulpturen, og derefter undersøgte om der var ild. Her er billederne:

 

 

Koden så sådan her ud:

%————————————————————————–

%

% filename: elia.m

% Dato: 9. jan. 2007

% Forfat.: MMF, MBH, MNH

% Beskrivelse: Fil til at finde ud af hvornår flammen på ELIA tænder,

% Test fil på mindre billeder

% Henvisninger:

%

%————————————————————————–

%

%delete(findobj(‘type’,'figure’))  % Sletter det/de åbne fig. vinduer

%

%

clear, close all

SuccessCount = 0

%

%%%%

% detectering på pixelregion

%%%%

%Pixelspand X-akse

pX1 = 275;

pX2 = 410; %450;

%Pixelspand Y-akse

pY1 = 297; %210;

pY2 = 370;

% Farven der detecteres på

R1 = 249;

R2 = 255;

G1 = 229;

G2 = 255;

B1 = 225;

B2 = 245;

run = 1;

while(run)

 

URL = ['image.jpg'];

try

[NewPicture,map]=imread(URL);

catch

‘fejl i imread’

end

%%%%

% Loading af pixelregion til variabler

%%%%

a = 1;

b = 1;

try

for r = pY1 : pY2,

for s = pX1 : pX2,

PicReg1(a,b,1) = NewPicture(r,s,1);

PicReg1(a,b,2) = NewPicture(r,s,2);

PicReg1(a,b,3) = NewPicture(r,s,3);

b=b+1;

end;

a=a+1;

b=1;

end;

catch

‘fejl i PicReg1 ‘

end

% imshow(NewPicture)

% figure

% imshow(PicReg1)

% run = 0;

% pause

%%%%

% Optælling af forekomster af “Farven der detecteres på”

%%%%

%

% En variabel der bruges til at optælle hvor mange pixels der ligger inden

% for “Farven der kan detecteres på”

antal = 0;

[S,R,F] = size(PicReg1);

try

for r = 1:S

for s = 1:R

if ( (PicReg1(r,s,1) >= R1) && (PicReg1(r,s,1) <= R2) && (PicReg1(r,s,2) >= G1) && (PicReg1(r,s,2) <= G2) && (PicReg1(r,s,3) >= B1) && PicReg1(r,s,3) <= B2) )

antal = antal + 1;

end;

end;

end;

catch

‘fejl i detektering’

end

try

if antal > 0 %100

antal

name = ['success\success' int2str(SuccessCount) '.jpg']

imwrite(NewPicture, name, ‘Quality’, 100);

SuccessCount = SuccessCount + 1

if (SuccessCount > 5000)

run = 0;

end

end

catch

‘ fejl i imwrite’

end

 

 

end