lecture 19 chapter 13 images continued. outline from chapter 12 -1 13.4 operating on images
TRANSCRIPT
![Page 1: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/1.jpg)
Lecture 19
Chapter 13 Imagescontinued
![Page 2: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/2.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/3.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/4.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/5.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/6.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/7.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/8.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/9.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/10.jpg)
Enhanced Green
![Page 11: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/11.jpg)
Find Yellow Edges
![Page 12: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/12.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/13.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/14.jpg)
Edge Detection in Color
![Page 15: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/15.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/16.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/17.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/18.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/19.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/20.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/21.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/22.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/23.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/24.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/25.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/26.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/27.jpg)
Comparing the Timbre of Instruments
![Page 28: Lecture 19 Chapter 13 Images continued. Outline from Chapter 12 -1 13.4 Operating on Images](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/28.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022062804/56649e5f5503460f94b588c8/html5/thumbnails/29.jpg)
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');