+ All Categories
Home > Documents > Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Date post: 16-Jan-2016
Category:
Upload: madlyn-fowler
View: 215 times
Download: 0 times
Share this document with a friend
29
Lecture 19 Chapter 13 Images continued
Transcript
Page 1: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Lecture 19

Chapter 13 Imagescontinued

Page 2: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Outline from Chapter 12 -1

13.4 Operating on Images

Page 3: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Modifying an Image• Locating an image within another image– Scene– Place an object into the scene

scene = imread ('C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Water lilies.jpg');image(scene);%bumblebee?bee1 = imread('C:\Documents and Settings\therese\My Documents\CSE1100summer2009\bee1.jpg');image(bee1);beeSize = 75;clippedBee1 = bee1(1:beeSize, 1:beeSize, :);image(clippedBee1);%initialize scenebeeInScene = scene;beeInScene(1:beeSize, 1:beeSize, :) = clippedBee1;image(beeInScene)

Page 4: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Rotating an Image%rotate the bee, around the center of the imagerotatedBee = clippedBee1;for theta = linspace(0,-pi/2,4) for xBee = 1:beeSize for yBee = 1:beeSize centeredX = xBee-beeSize/2; centeredY = yBee-beeSize/2; newCenteredCoordinatesBee = rotation2D(theta)*[centeredX

centeredY]'; newCoordinatesBee = newCenteredCoordinatesBee + beeSize/2 newCoordinatesBee = round(newCoordinatesBee); if newCoordinatesBee(1)<1 newCoordinatesBee(1) = 1; end; if newCoordinatesBee(2)<1 newCoordinatesBee(2) = 1; end; if newCoordinatesBee(1)>beeSize newCoordinatesBee(1) = beeSize; end; if newCoordinatesBee(2)>beeSize newCoordinatesBee(2) = beeSize; end; rotatedBee(newCoordinatesBee(1,1), newCoordinatesBee(2,1), :) = clippedBee1(xBee, yBee, :); end end beeInScene = scene; beeInScene(lastXlocs, lastYlocs, :) = rotatedBee; image(beeInScene) pause(.1)end

Page 5: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Setting a Region within an Imagefor time = t x = 8*time; y = 5*time; xlocations = round((1:beeSize)+x); ylocations = round((1:beeSize)+y); beeInScene = scene; beeInScene(xlocations, ylocations, :) = clippedBee1; image(beeInScene) pause(.05) lastXlocs = xlocations; lastYlocs = ylocations;end

Page 6: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Color Adjustment Via Mask

• Use the image to develop a logical array• Use the logical array as a mask• Update the image where mask allows

Page 7: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Green in Moth

We can use the combination of the presence of high level of greenwith the lower levels of red and blue, to identify the moth, e.g., >150.

Page 8: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Develop the Mask

mask(mothSize,mothSize,3) = 0; %establish size, mask(:,:,3) = 0; %no changes to blue, yetmask(:,:,1) = 0; %no changes to red, yetmask(:,:,2) = clippedMoth1(:,:,2)>greenThreshold... & clippedMoth1(:,:,1)<redThreshold... & clippedMoth1(:,:,3)<blueThreshold; %if the green is > threshold, and blue and red

are below theirs%then allow green level at that pixel to change

Page 9: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Apply the Mask

greenerMoth = clippedMoth1;greenerMoth(mask) = uint8(255);mask(:,:,3)=mask(:,:,2);% transfer the locations to the blue

signalmask(:,:,2)= 0; %leave green alonegreenerMoth(mask) = uint8(0); %no bluemask(:,:,1)=mask(:,:,3); %transfer the locations to the red signalmask(:,:,3)=0; %leave the blue alonegreenerMoth(mask) = uint8(0); %no redimage(greenerMoth)

Page 10: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Enhanced Green

Page 11: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Find Yellow Edges

Page 12: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Arithmetic with Colorsyellow = gr + red;plot(red, 'r');hold onplot(gr, 'g');plot(bl, 'b');plot(yellow, 'y');

Page 13: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

More Arithmetic with Colors

rat = yellow ./ bl;subplot(2,1,2)plot(rat,'--k');

Maybe 2.5 has meaning as athreshold; maybe 3.5

Page 14: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Edge Detection in Color

Page 15: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Outline from Chap 14

• 14.1 Physics of Sound• 14.2 Recording and Playback• 14.3 MATLAB Implementation• 14.4 Time Domain Operations– 14.4.1 Slicing and Concatenating Sound– 14.4.2 Musical Background– 14.4.3 Changing Sound Frequency Poorly– 14.4.4 Changing Sound Frequency Well

Page 16: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Physics of Sound

• Dynamic range: soft sounds and loud sounds have significantly different levels, so a logarithmic scale is used

• Frequencies serve as a basis set for describing waveforms. Spectral decomposition is extremely useful.

Page 17: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Recording and Playback

• Capturing the dynamic range: many significant bits– Approximately softest sound is 10 billion times

softer than the loudest comfortable sound– 16 bits is popular

• Capturing the high frequency content: high enough sampling rate.– Highest frequency heard said to be 20 kiloHertz– Sample at twice that suggests 40 kHz

Page 18: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

In MATLAB -1• Read with

– Wavread for .wav files– Auread for .au files

– [Y,FS,NBITS]=WAVREAD(FILE) returns the sample rate (FS) in Hertz and the number of bits per sample (NBITS) used to encode the data in the file.

[b16, F16, n] = wavread('C:\Documents and Settings\therese\My Documents\CSE1100summer2009\chimes.wav');

sound(b16, F16)[bb16, FF16, n] = wavread('C:\Documents and Settings\therese\My Documents\

CSE1100summer2009\ding.wav');sound(bb16, FF16)[bbb16, FFF16, n] = wavread('C:\Documents and Settings\therese\My Documents\

CSE1100summer2009\tada.wav');sound(bbb16, FFF16)

Page 19: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

In MATLAB -2

• Concatenation

longSound = [b16; bb16; bbb16];sound(longSound,FFF16)

Page 20: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

In MATLAB -3

• Examining the time domain waveform

Page 21: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

In MATLAB - 4

• Selecting in the time domainpiece1Start = round(length(b16)*(1/4));piece1End = round(length(b16)*(3/4));piece1 = b16(piece1Start:piece1End,:);

Page 22: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Modify Frequency by ResamplingHere the Resampling Is by Subset

[piano, piano16, n3] = wavread('C:\Documents and Settings\therese\My Documents\CSE1100summer2009\piano.wav');

sound(piano, piano16)note = piano;half = 2^(1/12);whole = half^2;for index = 1:8 sound(note, piano16); pause(.5); if (index==3)||(index ==7) mult = half; else mult = whole; end note = note(ceil(1:mult:end));end;

File from http://chronos.ece.mismi.edu/~dasp/samples/samples.html

Page 23: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Frequency Domain

• Different from time domain• Express our time waveform as a sum of other,

simpler time waveforms.• f(t) = sum of sin and cos functions, each with an

amplitude, and a frequency.• Then we can modify the amplitudes of the

individual sins and cosines, where the modification depends upon the frequency, to obtain useful effects (like taking the hissy noise out of damaged records).

Page 24: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Waveform Composition

• An algorithm, the fast Fourier Transform (FFT), calculates the coefficients of the components of the decomposition of a time-domain waveform.

• Each frequency used in the decomposition has a coefficient.

• If the coefficients are plotted vs. frequency, that is a spectrum.

Page 25: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

In MATLAB

• FFT operates on time domain to generate frequency component coefficients.

• iFFT operates on frequency domain coefficients to generate time domain representation.

Page 26: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Example Using FFTdt = 1/400;pts = 10000;f = 8;t = (1:pts)*dt; %sampling timesx1 = sin(2*pi*f*t);x2 = 3*sin(2*pi*5*f*t);x3 = 7*sin(2*pi*11*f*t);x=x1+x2+x3;subplot (3,1,1)plot(t(1:end/25),x(1:end/25));title('Time Domain Sine Waves');ylabel('Amplitude');xlabel('Time (Sec)');Y =fft(x); %Y gets the coefficientsdf = 1/ t(end); %the frequency

spacingfmax = df * pts /2;f = (1:pts)*2*fmax/pts; %frequencies

subplot(3,1,2);plot(f, real(Y));title('Real Part');xlabel('Frequency (Hz)');ylabel('Energy');subplot(3,1,3);plot(f, imag(Y));title('Imaginary Part');xlabel('Frequency (Hz)');ylabel('Energy');

Page 27: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Comparing the Timbre of Instruments

Page 28: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

Code for Previous disp('starting timbre')[trumpet, F16, n1] = wavread('C:\Documents and Settings\therese\My

Documents\CSE1100summer2009\trumpet.wav');sound(trumpet, F16)%F16ptsTrumpet = length(trumpet);[cello, FF16, n2] = wavread('C:\Documents and Settings\therese\My

Documents\CSE1100summer2009\cello.wav');sound(cello, FF16)%FF16ptsCello = length(cello);[piano, FFF16, n3] = wavread('C:\Documents and Settings\therese\My

Documents\CSE1100summer2009\piano.wav');sound(piano, F16)%FFF16ptsPiano = length(piano);dtTrumpet = 1/F16;dtCello = 1/FF16;dtPiano = 1/FFF16;f = 8;tTrumpet = (1:ptsTrumpet)*dt; %sampling timestCello = (1:ptsCello)*dt; %sampling timestPiano = (1:ptsPiano)*dt; %sampling timespause(tcello(ptsCello));

subplot (3,1,1)plot(tTrumpet(1:round(end/25)),trumpet(1:round(end/

25)),'y');hold onplot(tCello(1:round(end/25)),cello(1:round(end/25)),'r');plot(tPiano(1:round(end/25)),piano(1:round(end/25)),'g');title('Time Domain Trumpet');ylabel('Amplitude');xlabel('Time (Sec)');Ytrumpet =fft(trumpet); %Y gets the coefficientsYcello = fft(cello);Ypiano = fft(piano);dfTrumpet = 1/ tTrumpet(end); %the frequency spacingdfCello = 1/ tCello(end); %the frequency spacingdfPiano = 1/ tPiano(end); %the frequency spacingfmaxTrumpet = dfTrumpet * ptsTrumpet /2;fmaxCello = dfCello * ptsCello /2;fmaxPiano = dfPiano * ptsPiano /2;fTrumpet = (1:ptsTrumpet)*2*fmaxTrumpet/ptsTrumpet;

%frequenciesfCello = (1:ptsCello)*2*fmaxCello/ptsCello; %frequenciesfPiano = (1:ptsPiano)*2*fmaxPiano/ptsPiano; %frequenciessubplot(3,1,2);plot(fTrumpet, real(Ytrumpet),'y');hold onplot(fCello, real(Ycello),'r');plot(fPiano, real(Ypiano),'g');title('Real Part');xlabel('Frequency (Hz)');ylabel('Energy');

Page 29: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images.

More Code

• subplot(3,1,3);• plot(fTrumpet, imag(Ytrumpet));• hold on• plot(fCello, imag(Ycello),'r');• plot(fPiano, imag(Ypiano),'g');• title('Imaginary Part');• xlabel('Frequency (Hz)');• ylabel('Energy');


Recommended