Project 3: Image Enhancement - Spatial vs. Frequency Domain Filters. Steven Young: ECE 572
|
|
|
- Dominic Hall
- 10 years ago
- Views:
Transcription
1 Project 3: Image Enhancement - Spatial vs. Frequency Domain Filters Steven Young: ECE 572 Due: October 3, 20
2 Abstract The purpose of this project is to explore some simple image enhancement algorithms. This project introduces spatial and frequency domain lters. Thus it involves creating masks, performing convolution, Fourier transforms and inverse Fourier transforms. An in-depth understanding of the Fourier transform is critical to the understanding of this project.
3 Discussion Task (0 points) Below you can see the FFT transforms of a single pixel and of a large square on a 28x28 image. Figure : Original Image, FFT Magnitude and FFT Phase As you can see, taking the FFT of a single pixel results in a constant magnitude with a phase that alternates between two values in a checkerboard pattern. Taking the FFT of a large square results in an FFT magnitude that is a 2D sinc function. Below you can see the FFT transforms of some vertical lines on a 28x28 image.
4 Figure 2: Original Image, FFT Magnitude and FFT Phase As you can see, shifting the location of the line does not eect the FFT magnitude with only some slight changes in the phase. Changing the width of the line from to something greater than results in a one-dimensional sinc function instead of a constant magnitude line. With the single pixel image, we expected a constant magnitude and a constant phase of 0. We expected this because this is the FFT of an impulse. However, because of digitization, the phase is not constant 0. 2
5 Task 2 (30 points) For this task we will be working with the following image. Figure 3: Original Image Below are the 3x3, 5x5, and 7x7 gaussian kernels with sigma =.5 3
6 Figure 4: Guassian Kernel, Gaussian Filtered Image, Median Filtered Image (3x3, 5x5, 7x7) Subjectively, the Median lter seems to outperform the Gaussian lter with all kernel sizes. The Gaussian lter seems to make the picture fuzzy, and the Median lter seems to make the picture seem unnatural or cartoonish. Subjectively, both methods appear to remove the most artifacts with the smallest degradation with the 5x5 kernel. The Gaussian lter is linear, and thus it becomes fuzzier as the kernel size increases. The Median lter is nonlinear, and thus it does not become fuzzier as the kernel size increases. However, it does become more cartoonish looking when the kernel size increases. Decreasing the cuto frequency, D_0, in the frequency lter is similar to increasing the size of 4
7 the mask with the spatial lter. Below are some spatial and frequency domain comparisons. Figure 5: Spatial Guassian Filtered Image, Frequency Gaussian Filtered Image, Frequency Butterworth Filter (order =2)(3x3, D_0 = 64; 5x5, D_0 = 32; 7x7, D_0 = 6) 5
8 D_0 Gaussian Butterworth Table : LP Power Ratios Based on Tasks 2. and 2.2, I believe the same results can be acheived from spatial and frequency lters. However, linear and nonlinear lters cannot be interchanged to acheive the same results. Task 3 (30 points) For this task we will be working with the following image. Figure 6: Original Image Laplaciang and Sobel edge detection results are shown below. Figure 7: Laplacian and Sobel Edge Detection Results The Laplacian edge detector seems to have resulted in more precise edges, whereas the Sobel 6
9 edge detector seems to have wider edges. The Laplacian edge detector also only requires one convolution operation while the Sobel edge detector takes two convolution operations. Below is an unsharp mask with 3x3 and 9x9 kernels respectively. Figure 8: Unsharp Mask (3x3 and 9x9) As you can see, the larger the kernel the wider this edge becomes. While this make it easier for the human eye to view, it results in a less precise edge. Below are the Butterworth and Gaussian High Pass Filter results. Butterworth is in the left column and the cuto frequency, D_0, increases as you go down the column. 7
10 Figure 9: Two Sets w/ Three Kernel Sizes: Butterworth(D_0=(0,20,40), order =2) and Gaussian Edge Detection Results(D_0 = 0,20,40) As you can see these both produce similar results. The Butterworth seems to have some additional artifacts. The power ratios for these high pass lters are shown below. They are small because the high-frequency content, the edges, are a small portion of the image. 8
11 D_0 Butterworth Gaussian Table 2: HP Power Ratios Task 4 (30 points) The image used for this task is given below. Figure 0: Original Image Below are the results from the spatial domain and the frequency domian along with their difference image. 9
12 Figure : Spatial Average, Frequency Average, Dierence, Dierence Rescaled As, you can see the results are very similar. The dierence image shows that there is some dierence, but it is insignicant. Also, since the mask is small, the computation time is shorter for the spatial implementation. Spatial Freq secs Table 3: Computation Times Below are the autocorrelation images computed both spatially and in the frequency domain. 0
13 Figure 2: Spatial Autocorrleation and Frequency Autocorrelation As you can see, the same result is acheived with both methods. However, the frequency method is much faster because of the size of the convolution. Spatial Freq secs Table 4: Computation Times Extra Credit (0 points) For this task, the following image was used to demonstrate Homomorphic ltering. Figure 3: Original Image First, parameters had to be selected. The cuto frequency, D_0, was set to 2. Gamma_H was set to 00 and Gamma_L was set to 20. The order of the lter, c, was set to 0. The gamma values are used to truncate the histogram. The order parameter set the shape of the lter. The cuto parameter sets the minimum frequency. The ltered image is shown below. You can see many more features in the image.
14 Figure 4: Homomorphic Filtered Image Discussion This project reinforced the topics discussed in class. It broadened the students knowledge of the image enhancement techniques beyond what can be gained just by discussion or reading. It is especially important to understand the Fourier transform and its eects upon computation time and how to design lters to accomplish a task. 2
15 20:27:49 task.cpp / task.cpp - Implementation file for task Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #include "square.h" #include "line.h" #include "Image.h" #include "Dip.h" #include <iostream> #include <cstdlib> #include <cmath> // new: for log() using namespace std; #define Usage "./task ROWS COLS SQUARE_SIZE LINE_LOC LINE_WIDTH\n" int main(int argc, char argv) { Image inimg, outimg, mag, phase, maglog; int nr, nc, size_sq, line_loc, line_wid; int i, j; // output image cout << "Write magnitude image..." << endl; writeimage(mag, "../output/squaretestmag.pgm", ); cout << "Write magnitude image AFTER log transformation..." << endl; writeimage(maglog, "../output/squaretestmaglog.pgm", ); cout << "Write phase image..." << endl; writeimage(phase, "../output/squaretestphase.pgm", ); cout << "Write image after inverse Fourier transform..." << endl; writeimage(outimg, "../output/squaretestifft.pgm"); // read in image inimg = line(nr, nc, line_loc, line_wid); nr = inimg.getrow(); nc = inimg.getcol(); // Fourier transform fft(inimg, mag, phase); // magnitude after log transformation // maglog = logtran(mag); maglog = inimg; // new: allocate memory for (i=0; i<nr; i++) // new: perform log transformation to compress the dyna mic range for (j=0; j<nc; j++) // new: you should be able to call the logtran() you de signed in proj2 maglog(i,j) = log(+fabs(mag(i,j))); // inverse Fourier transform ifft(outimg, mag, phase); if (argc < 6) { cout << Usage; exit(3); // Convert Arugments to Integers nr = atoi(argv[]); nc = atoi(argv[2]); size_sq = atoi(argv[3]); line_loc = atoi(argv[4]); line_wid = atoi(argv[5]); // read in image inimg = square(nr, nc, size_sq); nr = inimg.getrow(); nc = inimg.getcol(); // output image cout << "Write magnitude image..." << endl; writeimage(mag, "../output/linetestmag.pgm", ); cout << "Write magnitude image AFTER log transformation..." << endl; writeimage(maglog, "../output/linetestmaglog.pgm", ); cout << "Write phase image..." << endl; writeimage(phase, "../output/linetestphase.pgm", ); cout << "Write image after inverse Fourier transform..." << endl; writeimage(outimg, "../output/linetestifft.pgm"); return 0; // allocate memory mag.createimage(nr, nc); phase.createimage(nr, nc); outimg.createimage(nr, nc); // Fourier transform fft(inimg, mag, phase); // magnitude after log transformation // maglog = logtran(mag); maglog = inimg; // new: allocate memory for (i=0; i<nr; i++) // new: perform log transformation to compress the dyna mic range for (j=0; j<nc; j++) // new: you should be able to call the logtran() you de signed in proj2 maglog(i,j) = log(+fabs(mag(i,j))); // inverse Fourier transform ifft(outimg, mag, phase);
16 20:22:24 task2.cpp / task2.cpp - Implementation file for task2_ Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #include "spatialfilter.h" #include "Image.h" #include "Dip.h" #include <iostream> #include <cstdlib> #include <cmath> // new: for log() using namespace std; #define Usage "./task2 INPUT_IMAGE N OUTPUT_IMAGE N_median OUTPUT_median\n" int main(int argc, char argv) { Image inimg, outimg; int n, n_m; if (argc < 6) { cout << Usage; exit(3); // Convert Arugments to Integers n = atoi(argv[2]); n_m = atoi(argv[4]); // read in image inimg = readimage(argv[]); // filter image outimg = gaussianfilter(inimg, n); // output image writeimage(outimg, argv[3], ); // median filter outimg = medianfilter(inimg, n_m); // output median image writeimage(outimg, argv[5], ); return 0;
17 20:26:39 task2_2.cpp / task2_2.cpp - Implementation file for task2_2 Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #include "freqfilter.h" #include "Image.h" #include "Dip.h" //#include <iostream> #include <cstdlib> #include <math.h> // new: for log() //using namespace std; #define Usage "./task2_2 INPUT_IMAGE CUTOFF ORDER OUTPUT_butterworth OUTPUT_gaussia n\n" int main(int argc, char argv) { Image inimg, outimg; int cutoff, order; if (argc < 6) { cout << Usage; exit(3); // Convert Arugments to Integers cutoff = atoi(argv[2]); order = atoi(argv[3]); // read in image inimg = readimage(argv[]); // filter image outimg = butterworthfilter(inimg, cutoff, order); // output image writeimage(outimg, argv[4], ); // gaussian filter outimg = gaussianfilterfreq(inimg, cutoff); // output median image writeimage(outimg, argv[5], ); return 0;
18 20:26:23 task3_.cpp / task3_.cpp - Implementation file for task3_ Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #include "spatialfilter.h" #include "Image.h" #include "Dip.h" //#include <iostream> #include <cstdlib> #include <math.h> // new: for log() //using namespace std; #define Usage "./task3_ input_image BLUR_AMOUNT output_unsharp output_sobel output _laplace\n" int main(int argc, char argv) { Image inimg, outimg; int mask_size, i, j, nr, nc; if (argc < 6) { cout << Usage; exit(3); // Convert Arugments to Integers mask_size = atoi(argv[2]); // read in image inimg = readimage(argv[]); nr = inimg.getrow(); nc = inimg.getcol(); // filter image outimg = unsharp(inimg, mask_size); // write image writeimage(outimg, argv[3], 0); // sobel filter outimg = sobelfilt(inimg); // output sobel writeimage(outimg, argv[4], 0); // laplacian filter outimg = laplacianfilter(inimg); // output laplace writeimage(outimg, argv[5], 0); return 0;
19 20:25:33 task3_2.cpp / task3_2.cpp - Implementation file for task3_2 Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #include "freqfilter.h" #include "Image.h" #include "Dip.h" //#include <iostream> #include <cstdlib> #include <math.h> // new: for log() //using namespace std; #define Usage "./task3_2 INPUT_IMAGE CUTOFF ORDER OUTPUT_butterworth OUTPUT_gaussia n\n" int main(int argc, char argv) { Image inimg, inimg_raw, outimg, outimg_raw; int cutoff, order, nr, nc, i, j, sq; if (argc < 6) { cout << Usage; exit(3); // Convert Arugments to Integers cutoff = atoi(argv[2]); order = atoi(argv[3]); // read in image inimg_raw = readimage(argv[]); nr = inimg_raw.getrow(); nc = inimg_raw.getcol(); // pad image for fft sq = 256; inimg.createimage(sq,sq); for(i=0;i<sq;i++){ for(j=0;j<sq;j++){ if(i<nr && j<nc){ inimg(i,j,0)=inimg_raw(i,j,0); else{ inimg(i,j,0)=0; // filter image outimg = butterworthfilterhp(inimg, cutoff, order); outimg_raw.createimage(nr,nc); for(i=0;i<nr;i++){ for(j=0;j<nc;j++){ outimg_raw(i,j,0)=outimg(i,j,0); // output image writeimage(outimg_raw, argv[4], ); // gaussian filter outimg = gaussianfilterfreqhp(inimg, cutoff); for(i=0;i<nr;i++){ for(j=0;j<nc;j++){ outimg_raw(i,j,0)=outimg(i,j,0); // output median image writeimage(outimg_raw, argv[5], ); return 0;
20 20:25: task4.cpp / task4.cpp - Implementation file for task4 Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #include "freqfilter.h" #include "spatialfilter.h" #include "Image.h" #include "Dip.h" #include "conv.h" #include <iostream> #include <cstdlib> #include <ctime> #include <math.h> // new: for log() using namespace std; #define Usage "./task4 INPUT_IMAGE OUTPUT_spatial OUTPUT_frequency OUTPUT_autospati al OUTPUT_autofreq\n" int main(int argc, char argv) { Image inimg, outimg, outimg2, mask, img_flip, diff; int i, j, sq, nr, nc; clock_t start, end; if (argc < 5) { cout << Usage; exit(3); // read in image inimg = readimage(argv[]); // spatial filter start = clock(); outimg = averagefilt(inimg, 5); end = clock(); cout << "Spatial Filter(s): " << (end-start)/(double)clocks_per_sec << endl; // output image writeimage(outimg, argv[2], ); // freq filter start = clock(); outimg2 = averagefilterfreq(inimg); end = clock(); cout << "Frequency Filter(s): " << (end-start)/(double)clocks_per_sec << endl; // output image writeimage(outimg2, argv[3], ); // diff image diff = outimg2-outimg; //output image writeimage(diff, "../output/diffimage.pgm", 0); // autocorellation spatial start = clock(); nr = inimg.getrow(); nc = inimg.getcol(); img_flip.createimage(nr,nc); for(i=0;i<nr;i++){ for(j=0;j<nc;j++){ img_flip(i,j,0)=inimg(nr--i, nc--j,0); outimg = conv(inimg, img_flip); end = clock(); cout << "Spatial Filter(s): " << (end-start)/(double)clocks_per_sec << endl; // output image writeimage(outimg, argv[4], ); // autocorellation freq start = clock(); outimg = auto_freq(inimg); end = clock(); cout << "Frequency Filter(s): " << (end-start)/(double)clocks_per_sec << endl; // write image writeimage(outimg, argv[5], ); return 0;
21 20:28:58 extracredit.cpp / extracredit.cpp - Implementation file for extracredit Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #include "freqfilter.h" #include "Image.h" #include "Dip.h" //#include <iostream> #include <cstdlib> #include <math.h> // new: for log() //using namespace std; #define Usage "./extracredit input_image c gamma_l gamma_h cutoff output_image\n" int main(int argc, char argv) { Image inimg, outimg; int nr, nc, i, j, sq, cutoff; float c, gamma_l, gamma_h; if (argc < 6) { cout << Usage; exit(3); // Convert Arugments to Integers c = atof(argv[2]); gamma_l = atof(argv[3]); gamma_h = atof(argv[4]); cutoff = atoi(argv[5]); // read in image inimg= readimage(argv[]); // homomorphic filter outimg = homomorphic(inimg, c, gamma_l, gamma_h, cutoff); // output median image writeimage(outimg, argv[6], ); return 0;
22 20:32:42 conv.cpp / conv.cpp - Implementation file for convolution function Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #include "conv.h" Image conv(image input, Image mask){ Image output; int szr, szc, mask_nr, mask_nc, mrad_r, mrad_c; int i, j, ii, jj; szr = input.getrow(); szc = input.getcol(); mask_nr = mask.getrow(); mask_nc = mask.getcol(); mrad_r = mask_nr/2; mrad_c = mask_nc/2; output.createimage(szr, szc); for(i=0;i<szr;i++){ for(j=0;j<szc;j++){ output(i,j,0)=0; for(ii=0;ii<mask_nr;ii++){ for(jj=0;jj<mask_nc;jj++){ if((i-mrad_r +ii >= 0) && (i-mrad_r +ii < szc) && (j-mrad_c +jj >= 0) && (j-mrad_c +jj < szr)){ output(i,j,0) += input(i-mrad_r + ii, j-mrad_c +jj,0) mask(mask_nr-- ii, mask_nc--jj, 0); return output;
23 20:32:50 conv.h / conv.h - Header file for convolution function Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #ifndef LINE_H #define LINE_H #include "Image.h" Image conv(image, Image); #endif
24 20:9:28 square.cpp / square.cpp - Implementation file for square Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #include "square.h" Image square(int szr, int szc, int diam_sq){ Image output; int start_r, start_c, end_r, end_c; int i, j; output.createimage(szr, szc); start_r = szr/2 - diam_sq/2; start_c = szc/2 - diam_sq/2; end_r = start_r + diam_sq - ; end_c = start_c + diam_sq - ; for(i=0;i<szr;i++){ for(j=0;j<szc;j++){ if (i >= start_r && i <= end_r && j >= start_c && j <= end_c){ output(i,j,0) = 255; else{ output(i,j,0) = 0; return output;
25 20:5:24 square.h / square.h - Header file for square Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #ifndef SQUARE_H #define SQUARE_H #include "Image.h" Image square(int, int, int); #endif
26 20:8: line.cpp / line.cpp - Implementation file for line Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #include "line.h" Image line(int szr, int szc, int loc_ln, int wid_ln){ Image output; int start_c, end_c; int i, j; output.createimage(szr, szc); start_c = loc_ln; end_c = loc_ln + wid_ln -; for(i=0;i<szr;i++){ for(j=0;j<szc;j++){ if (j >= start_c && j <= end_c){ output(i,j,0) = 255; else{ output(i,j,0) = 0; return output;
27 20:3:55 line.h / line.h - Header file for line Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #ifndef LINE_H #define LINE_H #include "Image.h" Image line(int, int, int, int); #endif
28 20:29:47 spatialfilter.cpp / spatialfilter.cpp - Implementation file for spatial computations Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / return output; Image unsharp(image inimg, int blur_size){ Image blur, sub_blur; //blur image blur = averagefilt(inimg, blur_size); // Subtract blur sub_blur = inimg - blur; #include "spatialfilter.h" Image gaussianfilter(image inimg, int n){ Image mask, output; int i, j, center; float den, sigma; // allocate memory mask.createimage(n, n); sigma =.5; den = /(2PIsigmasigma); center = n/2; // create mask for(i=0;i<n;i++){ for(j=0;j<n;j++){ mask(i,j,0) = exp(-(abs(center-i)+abs(center-j))/(2sigmasigma)) / den; writeimage(mask, "../output/kernel.pgm", ); //convolve image with filter output = conv(inimg, mask); return output; Image medianfilter(image inimg, int n){ Image mask, output; int nr, nc, i, j, ii, jj, middle; nr = inimg.getrow(); nc = inimg.getcol(); output.createimage(nr,nc); // create mask for(i=0;i<nr;i++){ for(j=0;j<nc;j++){ list<int> p_values; for(ii=max(0,i-n/2);ii<min(nr,i+n/2+);ii++){ for(jj=max(0,j-n/2);jj<min(nc,j+n/2+);jj++){ p_values.push_back(inimg(ii,jj,0)); p_values.sort(); middle = p_values.size()/2; list<int>::iterator it = p_values.begin(); advance(it,middle); output(i,j,0) = it; // add back inimg = inimg + (sub_blur0); return sub_blur; Image averagefilt(image inimg, int size){ Image mask, outimg; int i, j; mask.createimage(size,size); for(i=0;i<size;i++){ for(j=0;j<size;j++){ mask(i,j,0)=.0/(sizesize); outimg = conv(inimg, mask); return outimg; Image sobelfilt(image inimg){ Image mask, output, output2; int i, j; mask.createimage(3,3); mask(0,0)=-; mask(0,)=-2; mask(0,2) = -; mask(,0)= 0; mask(,)= 0; mask(,2) = 0; mask(2,0)= ; mask(2,)= 2; mask(2,2) = ; output = conv(inimg, mask); for(i=0;i<output.getrow();i++){ for(j=0;j<output.getcol();j++){ output(i,j,0) = abs(output(i,j,0)); mask(0,0)=-; mask(0,)= 0; mask(0,2) = ; mask(,0)=-2; mask(,)= 0; mask(,2) = 2; mask(2,0)=-; mask(2,)= 0; mask(2,2) = ; output2 = conv(inimg, mask); for(i=0;i<output2.getrow();i++){ for(j=0;j<output2.getcol();j++){ output2(i,j,0) = abs(output2(i,j,0));
29 20:29:47 spatialfilter.cpp 2 return output + output2; Image laplacianfilter(image inimg){ Image mask, output; mask.createimage(3,3); mask(0,0)= 0; mask(0,)=-; mask(0,2) = 0; mask(,0)=-; mask(,)= 4; mask(,2) = -; mask(2,0)= 0; mask(2,)=-; mask(2,2) = 0; output = conv(inimg, mask); return output;
30 20:4:20 spatialfilter.h / spatialfilter.h - Header file for spatial computations Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #ifndef SPATIALFILTER_H #define SPATIALFILTER_H #include "Image.h" #include <math.h> #include "Dip.h" #include "conv.h" #include <list> Image gaussianfilter(image, int); Image medianfilter(image, int); Image unsharp(image, int); Image averagefilt(image, int); Image sobelfilt(image); Image laplacianfilter(image); #endif
31 20:32:27 freqfilter.cpp / freqfilter.cpp - Implementation file for frequency computations Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / float total_power = calculatepower(mag); // filter nr = mag.getrow(); nc = mag.getcol(); for(i=0;i<nr;i++){ for(j=0;j<nc;j++){ mag(i,j,0) = mag(i,j,0) /(+pow(cutoff/d2c(nr,nc,i,j),2order)); float power = calculatepower(mag); #include "freqfilter.h" Image butterworthfilter(image inimg, int cutoff, int order){ Image mag, phase, outimg; int nr, nc, i, j; nr = inimg.getrow(); nc = inimg.getcol(); // allocate memory mag.createimage(nr, nc); phase.createimage(nr, nc); outimg.createimage(nr, nc); // get fft fft(inimg, mag, phase); float total_power = calculatepower(mag); // filter nr = mag.getrow(); nc = mag.getcol(); for(i=0;i<nr;i++){ for(j=0;j<nc;j++){ mag(i,j,0) = mag(i,j,0) /(+pow(d2c(nr,nc,i,j)/cutoff,2order)); float power = calculatepower(mag); cout << "LP Butterworthn PR: " << 00power/total_power << endl; // get ifft ifft(outimg, mag, phase); return outimg; Image butterworthfilterhp(image inimg, int cutoff, int order){ Image mag, phase, outimg; int nr, nc, i, j; nr = inimg.getrow(); nc = inimg.getcol(); // allocate memory mag.createimage(nr, nc); phase.createimage(nr, nc); outimg.createimage(nr, nc); // get fft fft(inimg, mag, phase); cout << "HP Butterworthn PR: " << 00power/total_power << endl; // get ifft ifft(outimg, mag, phase); return outimg; Image gaussianfilterfreq(image inimg, int cutoff){ Image mag, phase, outimg; int nr, nc, i, j; nr = inimg.getrow(); nc = inimg.getcol(); // allocate memory mag.createimage(nr, nc); phase.createimage(nr, nc); outimg.createimage(nr, nc); // get fft fft(inimg, mag, phase); float total_power = calculatepower(mag); // filter nr = mag.getrow(); nc = mag.getcol(); for(i=0;i<nr;i++){ for(j=0;j<nc;j++){ float dist = d2c(nr,nc,i,j); mag(i,j,0) = mag(i,j,0) exp(-distdist/(2cutoffcutoff)); float power = calculatepower(mag); cout << "LP Gaussian PR: " << 00power/total_power << endl; // get ifft ifft(outimg, mag, phase); return outimg; Image gaussianfilterfreqhp(image inimg, int cutoff){ Image mag, phase, outimg; int nr, nc, i, j; nr = inimg.getrow();
32 20:32:27 freqfilter.cpp 2 nc = inimg.getcol(); // allocate memory mag.createimage(nr, nc); phase.createimage(nr, nc); outimg.createimage(nr, nc); // get fft fft(inimg, mag, phase); float total_power = calculatepower(mag); // filter nr = mag.getrow(); nc = mag.getcol(); for(i=0;i<nr;i++){ for(j=0;j<nc;j++){ mag(i,j,0) = mag(i,j,0) mask_mag(i,j,0); phase(i,j,0) = phase(i,j,0) - mask_phase(i,j,0); // filter nr = mag.getrow(); nc = mag.getcol(); for(i=0;i<nr;i++){ for(j=0;j<nc;j++){ float dist = d2c(nr,nc,i,j); mag(i,j,0) = mag(i,j,0) ( - exp(-distdist/(2cutoffcutoff))); float power = calculatepower(mag); cout << "HP Gaussian PR: " << 00power/total_power << endl; // get ifft ifft(outimg, mag, phase); return outimg; Image averagefilterfreq(image inimg){ Image mag, phase, outimg, mask, mask_mag, mask_phase, img_pad; int nr, nc, i, j; nr = inimg.getrow(); nc = inimg.getcol(); // create padded mask mask.createimage(2nr,2nc); for(i=0;i<5;i++){ for(j=0;j<5;j++){ mask(i,j,0) =.0/25.0; // created padded image img_pad.createimage(2nr,2nc); for(i=0;i<nr;i++){ for(j=0;j<nc;j++){ img_pad(i+2,j+2,0) = inimg(i,j,0); // allocate memory mag.createimage(2nr,2nc); phase.createimage(2nr,2nc); outimg.createimage(2nr,2nc); mask_mag.createimage(2nr,2nc); mask_phase.createimage(2nr,2nc); // get fft fft(img_pad, mag, phase); fft(mask, mask_mag, mask_phase); // get ifft ifft(outimg, mag, phase); outimg = subimage(outimg,0,0,nr/2-, nc/2-); return outimg; Image auto_freq(image inimg){ Image in_pad, mag, phase, outimg, img_flip, if_pad, magf, phasef, outimg2; int nr, nc, i, j; nr = inimg.getrow(); nc = inimg.getcol(); in_pad.createimage(2nr, 2nc); for(i=0;i<nr;i++){ for(j=0;j<nc;j++){ in_pad(i,j,0)=inimg(i,j,0); nr = in_pad.getrow(); nc = in_pad.getcol(); // allocate memory mag.createimage(nr, nc); phase.createimage(nr, nc); outimg.createimage(nr, nc); magf.createimage(nr, nc); phasef.createimage(nr, nc); // get fft fft(in_pad, mag, phase); // filter nr = mag.getrow(); nc = mag.getcol(); for(i=0;i<nr;i++){ for(j=0;j<nc;j++){ mag(i,j,0) = mag(i,j,0) mag(i,j,0); phase(i,j,0) = 0; // get ifft ifft(outimg, mag, phase); outimg2.createimage(nr/2, nc/2); // rearrange image for(i=0;i<nr/2;i++){
33 20:32:27 freqfilter.cpp 3 for(j=0;j<nc/2;j++){ int x = 3nr/4+i; int y = 3nc/4+j; if(x > nr-){ x = x - nr; if(y > nc-){ y = y - nc; outimg2(i,j,0) = outimg(x,y,0); return outimg2; float d2c(int nr, int nc, int x, int y){ float nrf = (float) nr; float ncf = (float) nc; float xf = (float) x; float yf = (float) y; // Calculate Power float p_t = 0; for(i=0;i<nr;i++){ for(j=0;j<nc;j++){ p_t += mag(i,j,0) mag(i,j,0); return p_t; return sqrt( ((nrf/2)-xf)((nrf/2)-xf) + ((ncf/2)-yf)((ncf/2)-yf)); Image homomorphic(image inimg, float c, float gamma_l, float gamma_h, int cutoff){ Image mag, phase, outimg; int nr, nc, i, j; nr = inimg.getrow(); nc = inimg.getcol(); // allocate memory mag.createimage(nr, nc); phase.createimage(nr, nc); outimg.createimage(nr, nc); // get fft fft(inimg, mag, phase); // filter nr = mag.getrow(); nc = mag.getcol(); for(i=0;i<nr;i++){ for(j=0;j<nc;j++){ float dist = d2c(nr,nc,i,j); mag(i,j,0) = mag(i,j,0) ((gamma_h-gamma_l)( - exp(-cdistdist/(cutoffcu toff)))+gamma_l); // get ifft ifft(outimg, mag, phase); return outimg; float calculatepower(image mag){ int i, j, nr, nc; nr = mag.getrow(); nc = mag.getcol();
34 20:3:33 freqfilter.h / freqfilter.h - Header file for frequency computations Author: Steven Young ([email protected]), EECS University of Tennessee Class: ECE 572 Fall 20 Created: 0/0/20 Note: / #ifndef FREQFILTER_H #define FREQFILTER_H #include "Image.h" #include <math.h> #include "Dip.h" #include "conv.h" #include <list> Image butterworthfilter(image, int, int); Image butterworthfilterhp(image, int, int); Image gaussianfilterfreq(image, int); Image gaussianfilterfreqhp(image, int); Image averagefilterfreq(image); Image auto_freq(image); float d2c(int, int, int, int); Image homomorphic(image, float, float, float, int); float calculatepower(image); #endif
Comp151. Definitions & Declarations
Comp151 Definitions & Declarations Example: Definition /* reverse_printcpp */ #include #include using namespace std; int global_var = 23; // global variable definition void reverse_print(const
An Incomplete C++ Primer. University of Wyoming MA 5310
An Incomplete C++ Primer University of Wyoming MA 5310 Professor Craig C. Douglas http://www.mgnet.org/~douglas/classes/na-sc/notes/c++primer.pdf C++ is a legacy programming language, as is other languages
Digital Imaging and Multimedia. Filters. Ahmed Elgammal Dept. of Computer Science Rutgers University
Digital Imaging and Multimedia Filters Ahmed Elgammal Dept. of Computer Science Rutgers University Outlines What are Filters Linear Filters Convolution operation Properties of Linear Filters Application
Lectures 6&7: Image Enhancement
Lectures 6&7: Image Enhancement Leena Ikonen Pattern Recognition (MVPR) Lappeenranta University of Technology (LUT) [email protected] http://www.it.lut.fi/ip/research/mvpr/ 1 Content Background Spatial
Storage Classes CS 110B - Rule Storage Classes Page 18-1 \handouts\storclas
CS 110B - Rule Storage Classes Page 18-1 Attributes are distinctive features of a variable. Data type, int or double for example, is an attribute. Storage class is another attribute. There are four storage
Admin stuff. 4 Image Pyramids. Spatial Domain. Projects. Fourier domain 2/26/2008. Fourier as a change of basis
Admin stuff 4 Image Pyramids Change of office hours on Wed 4 th April Mon 3 st March 9.3.3pm (right after class) Change of time/date t of last class Currently Mon 5 th May What about Thursday 8 th May?
Convolution. 1D Formula: 2D Formula: Example on the web: http://www.jhu.edu/~signals/convolve/
Basic Filters (7) Convolution/correlation/Linear filtering Gaussian filters Smoothing and noise reduction First derivatives of Gaussian Second derivative of Gaussian: Laplacian Oriented Gaussian filters
DSP First Laboratory Exercise #9 Sampling and Zooming of Images In this lab we study the application of FIR ltering to the image zooming problem, where lowpass lters are used to do the interpolation needed
Computational Foundations of Cognitive Science
Computational Foundations of Cognitive Science Lecture 15: Convolutions and Kernels Frank Keller School of Informatics University of Edinburgh [email protected] February 23, 2010 Frank Keller Computational
Filter Comparison. Match #1: Analog vs. Digital Filters
CHAPTER 21 Filter Comparison Decisions, decisions, decisions! With all these filters to choose from, how do you know which to use? This chapter is a head-to-head competition between filters; we'll select
Phys4051: C Lecture 2 & 3. Comment Statements. C Data Types. Functions (Review) Comment Statements Variables & Operators Branching Instructions
Phys4051: C Lecture 2 & 3 Functions (Review) Comment Statements Variables & Operators Branching Instructions Comment Statements! Method 1: /* */! Method 2: // /* Single Line */ //Single Line /* This comment
MATRIX TECHNICAL NOTES
200 WOOD AVENUE, MIDDLESEX, NJ 08846 PHONE (732) 469-9510 FAX (732) 469-0418 MATRIX TECHNICAL NOTES MTN-107 TEST SETUP FOR THE MEASUREMENT OF X-MOD, CTB, AND CSO USING A MEAN SQUARE CIRCUIT AS A DETECTOR
Member Functions of the istream Class
Member Functions of the istream Class The extraction operator is of limited use because it always uses whitespace to delimit its reads of the input stream. It cannot be used to read those whitespace characters,
Copyright 2001, Bill Trudell. Permission is granted to copy for the PLoP 2001 conference. All other rights reserved.
The Secret Partner Pattern Revision 3a by Bill Trudell, July 23, 2001 Submitted to the Pattern Languages of Programs Shepherd: Neil Harrison PC Member: Kyle Brown Thumbnail This paper describes the Secret
Implementation of Canny Edge Detector of color images on CELL/B.E. Architecture.
Implementation of Canny Edge Detector of color images on CELL/B.E. Architecture. Chirag Gupta,Sumod Mohan K [email protected], [email protected] Abstract In this project we propose a method to improve
Signal to Noise Instrumental Excel Assignment
Signal to Noise Instrumental Excel Assignment Instrumental methods, as all techniques involved in physical measurements, are limited by both the precision and accuracy. The precision and accuracy of a
Digital Image Processing
GONZ_FMv3.qxd 7/26/07 9:05 AM Page i Digital Image Processing Third Edition Rafael C. Gonzalez University of Tennessee Richard E. Woods MedData Interactive Upper Saddle River, NJ 07458 GONZ_FMv3.qxd 7/26/07
Sharpening through spatial filtering
Sharpening through spatial filtering Stefano Ferrari Università degli Studi di Milano [email protected] Elaborazione delle immagini (Image processing I) academic year 2011 2012 Sharpening The term
Arrays. number: Motivation. Prof. Stewart Weiss. Software Design Lecture Notes Arrays
Motivation Suppose that we want a program that can read in a list of numbers and sort that list, or nd the largest value in that list. To be concrete about it, suppose we have 15 numbers to read in from
MATLAB-based Applications for Image Processing and Image Quality Assessment Part I: Software Description
RADIOENGINEERING, VOL. 20, NO. 4, DECEMBER 2011 1009 MATLAB-based Applications for Image Processing and Image Quality Assessment Part I: Software Description Lukáš KRASULA, Miloš KLÍMA, Eric ROGARD, Edouard
Basic Image Processing (using ImageJ)
Basic Image Processing (using ImageJ) Dr. Arne Seitz Swiss Institute of Technology (EPFL) Faculty of Life Sciences Head of BIOIMAGING AND OPTICS BIOP [email protected] Overview File formats (data storage)
Boolean Expressions, Conditions, Loops, and Enumerations. Precedence Rules (from highest to lowest priority)
Boolean Expressions, Conditions, Loops, and Enumerations Relational Operators == // true if two values are equivalent!= // true if two values are not equivalent < // true if left value is less than the
Informatica e Sistemi in Tempo Reale
Informatica e Sistemi in Tempo Reale Introduction to C programming Giuseppe Lipari http://retis.sssup.it/~lipari Scuola Superiore Sant Anna Pisa October 25, 2010 G. Lipari (Scuola Superiore Sant Anna)
Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.
Name: Class: Date: Exam #1 - Prep True/False Indicate whether the statement is true or false. 1. Programming is the process of writing a computer program in a language that the computer can respond to
Final Year Project Progress Report. Frequency-Domain Adaptive Filtering. Myles Friel. Supervisor: Dr.Edward Jones
Final Year Project Progress Report Frequency-Domain Adaptive Filtering Myles Friel 01510401 Supervisor: Dr.Edward Jones Abstract The Final Year Project is an important part of the final year of the Electronic
Enhancement of scanned documents in Besov spaces using wavelet domain representations
Enhancement of scanned documents in Besov spaces using wavelet domain representations Kathrin Berkner 1 Ricoh Innovations, Inc., 2882 Sand Hill Road, Suite 115, Menlo Park, CA 94025 ABSTRACT After scanning,
Image Compression through DCT and Huffman Coding Technique
International Journal of Current Engineering and Technology E-ISSN 2277 4106, P-ISSN 2347 5161 2015 INPRESSCO, All Rights Reserved Available at http://inpressco.com/category/ijcet Research Article Rahul
Non-Data Aided Carrier Offset Compensation for SDR Implementation
Non-Data Aided Carrier Offset Compensation for SDR Implementation Anders Riis Jensen 1, Niels Terp Kjeldgaard Jørgensen 1 Kim Laugesen 1, Yannick Le Moullec 1,2 1 Department of Electronic Systems, 2 Center
Ch 7-1. Object-Oriented Programming and Classes
2014-1 Ch 7-1. Object-Oriented Programming and Classes May 10, 2014 Advanced Networking Technology Lab. (YU-ANTL) Dept. of Information & Comm. Eng, Graduate School, Yeungnam University, KOREA (Tel : +82-53-810-2497;
Design of FIR Filters
Design of FIR Filters Elena Punskaya www-sigproc.eng.cam.ac.uk/~op205 Some material adapted from courses by Prof. Simon Godsill, Dr. Arnaud Doucet, Dr. Malcolm Macleod and Prof. Peter Rayner 68 FIR as
Project 2: Bejeweled
Project 2: Bejeweled Project Objective: Post: Tuesday March 26, 2013. Due: 11:59PM, Monday April 15, 2013 1. master the process of completing a programming project in UNIX. 2. get familiar with command
Analecta Vol. 8, No. 2 ISSN 2064-7964
EXPERIMENTAL APPLICATIONS OF ARTIFICIAL NEURAL NETWORKS IN ENGINEERING PROCESSING SYSTEM S. Dadvandipour Institute of Information Engineering, University of Miskolc, Egyetemváros, 3515, Miskolc, Hungary,
Introduction to Medical Imaging. Lecture 11: Cone-Beam CT Theory. Introduction. Available cone-beam reconstruction methods: Our discussion:
Introduction Introduction to Medical Imaging Lecture 11: Cone-Beam CT Theory Klaus Mueller Available cone-beam reconstruction methods: exact approximate algebraic Our discussion: exact (now) approximate
Controller Design in Frequency Domain
ECSE 4440 Control System Engineering Fall 2001 Project 3 Controller Design in Frequency Domain TA 1. Abstract 2. Introduction 3. Controller design in Frequency domain 4. Experiment 5. Colclusion 1. Abstract
COMPUTER SCIENCE 1999 (Delhi Board)
COMPUTER SCIENCE 1999 (Delhi Board) Time allowed: 3 hours Max. Marks: 70 Instructions: (i) All the questions are compulsory. (ii) Programming Language: C++ QUESTION l. (a) Why main function is special?
Analysis of Binary Search algorithm and Selection Sort algorithm
Analysis of Binary Search algorithm and Selection Sort algorithm In this section we shall take up two representative problems in computer science, work out the algorithms based on the best strategy to
Short-time FFT, Multi-taper analysis & Filtering in SPM12
Short-time FFT, Multi-taper analysis & Filtering in SPM12 Computational Psychiatry Seminar, FS 2015 Daniel Renz, Translational Neuromodeling Unit, ETHZ & UZH 20.03.2015 Overview Refresher Short-time Fourier
What is a Loop? Pretest Loops in C++ Types of Loop Testing. Count-controlled loops. Loops can be...
What is a Loop? CSC Intermediate Programming Looping A loop is a repetition control structure It causes a single statement or a group of statements to be executed repeatedly It uses a condition to control
Developing an ODBC C++ Client with MySQL Database
Developing an ODBC C++ Client with MySQL Database Author: Rajinder Yadav Date: Aug 21, 2007 Web: http://devmentor.org Email: [email protected] Assumptions I am going to assume you already know how
Lecture 14. Point Spread Function (PSF)
Lecture 14 Point Spread Function (PSF), Modulation Transfer Function (MTF), Signal-to-noise Ratio (SNR), Contrast-to-noise Ratio (CNR), and Receiver Operating Curves (ROC) Point Spread Function (PSF) Recollect
URI and UUID. Identifying things on the Web.
URI and UUID Identifying things on the Web. Overview > Uniform Resource Identifiers (URIs) > URIStreamOpener > Universally Unique Identifiers (UUIDs) Uniform Resource Identifiers > Uniform Resource Identifiers
Lecture 2 Notes: Flow of Control
6.096 Introduction to C++ January, 2011 Massachusetts Institute of Technology John Marrero Lecture 2 Notes: Flow of Control 1 Motivation Normally, a program executes statements from first to last. The
Segmentation and Automatic Descreening of Scanned Documents
Segmentation and Automatic Descreening of Scanned Documents Alejandro Jaimes a, Frederick Mintzer b, A. Ravishankar Rao b and Gerhard Thompson b a Columbia University b IBM T.J. Watson Research Center
jorge s. marques image processing
image processing images images: what are they? what is shown in this image? What is this? what is an image images describe the evolution of physical variables (intensity, color, reflectance, condutivity)
Answers to Review Questions Chapter 7
Answers to Review Questions Chapter 7 1. The size declarator is used in a definition of an array to indicate the number of elements the array will have. A subscript is used to access a specific element
Linear Filtering Part II
Linear Filtering Part II Selim Aksoy Department of Computer Engineering Bilkent University [email protected] Fourier theory Jean Baptiste Joseph Fourier had a crazy idea: Any periodic function can
Em bedded DSP : I ntroduction to Digital Filters
Embedded DSP : Introduction to Digital Filters 1 Em bedded DSP : I ntroduction to Digital Filters Digital filters are a important part of DSP. In fact their extraordinary performance is one of the keys
Bildverarbeitung und Mustererkennung Image Processing and Pattern Recognition
Bildverarbeitung und Mustererkennung Image Processing and Pattern Recognition 1. Image Pre-Processing - Pixel Brightness Transformation - Geometric Transformation - Image Denoising 1 1. Image Pre-Processing
Lecture 3. Optimising OpenCL performance
Lecture 3 Optimising OpenCL performance Based on material by Benedict Gaster and Lee Howes (AMD), Tim Mattson (Intel) and several others. - Page 1 Agenda Heterogeneous computing and the origins of OpenCL
L9: Cepstral analysis
L9: Cepstral analysis The cepstrum Homomorphic filtering The cepstrum and voicing/pitch detection Linear prediction cepstral coefficients Mel frequency cepstral coefficients This lecture is based on [Taylor,
Simple C++ Programs. Engineering Problem Solving with C++, Etter/Ingber. Dev-C++ Dev-C++ Windows Friendly Exit. The C++ Programming Language
Simple C++ Programs Engineering Problem Solving with C++, Etter/Ingber Chapter 2 Simple C++ Programs Program Structure Constants and Variables C++ Operators Standard Input and Output Basic Functions from
Data Structures using OOP C++ Lecture 1
References: 1. E Balagurusamy, Object Oriented Programming with C++, 4 th edition, McGraw-Hill 2008. 2. Robert Lafore, Object-Oriented Programming in C++, 4 th edition, 2002, SAMS publishing. 3. Robert
Computational Optical Imaging - Optique Numerique. -- Deconvolution --
Computational Optical Imaging - Optique Numerique -- Deconvolution -- Winter 2014 Ivo Ihrke Deconvolution Ivo Ihrke Outline Deconvolution Theory example 1D deconvolution Fourier method Algebraic method
Vi, fi input. Vphi output VCO. Vosc, fosc. voltage-controlled oscillator
Experiment #4 CMOS 446 Phase-Locked Loop c 1997 Dragan Maksimovic Department of Electrical and Computer Engineering University of Colorado, Boulder The purpose of this lab assignment is to introduce operating
Correlation and Convolution Class Notes for CMSC 426, Fall 2005 David Jacobs
Correlation and Convolution Class otes for CMSC 46, Fall 5 David Jacobs Introduction Correlation and Convolution are basic operations that we will perform to extract information from images. They are in
POISSON AND LAPLACE EQUATIONS. Charles R. O Neill. School of Mechanical and Aerospace Engineering. Oklahoma State University. Stillwater, OK 74078
21 ELLIPTICAL PARTIAL DIFFERENTIAL EQUATIONS: POISSON AND LAPLACE EQUATIONS Charles R. O Neill School of Mechanical and Aerospace Engineering Oklahoma State University Stillwater, OK 74078 2nd Computer
C++ Outline. cout << "Enter two integers: "; int x, y; cin >> x >> y; cout << "The sum is: " << x + y << \n ;
C++ Outline Notes taken from: - Drake, Caleb. EECS 370 Course Notes, University of Illinois Chicago, Spring 97. Chapters 9, 10, 11, 13.1 & 13.2 - Horstman, Cay S. Mastering Object-Oriented Design in C++.
Chapter 5 Functions. Introducing Functions
Chapter 5 Functions 1 Introducing Functions A function is a collection of statements that are grouped together to perform an operation Define a function Invoke a funciton return value type method name
REAL TIME TRAFFIC LIGHT CONTROL USING IMAGE PROCESSING
REAL TIME TRAFFIC LIGHT CONTROL USING IMAGE PROCESSING Ms.PALLAVI CHOUDEKAR Ajay Kumar Garg Engineering College, Department of electrical and electronics Ms.SAYANTI BANERJEE Ajay Kumar Garg Engineering
CpSc212 Goddard Notes Chapter 6. Yet More on Classes. We discuss the problems of comparing, copying, passing, outputting, and destructing
CpSc212 Goddard Notes Chapter 6 Yet More on Classes We discuss the problems of comparing, copying, passing, outputting, and destructing objects. 6.1 Object Storage, Allocation and Destructors Some objects
Introduction to Programming (in C++) Loops. Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC
Introduction to Programming (in C++) Loops Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC Example Assume the following specification: Input: read a number N > 0 Output:
While Loop. 6. Iteration
While Loop 1 Loop - a control structure that causes a set of statements to be executed repeatedly, (reiterated). While statement - most versatile type of loop in C++ false while boolean expression true
Example. Introduction to Programming (in C++) Loops. The while statement. Write the numbers 1 N. Assume the following specification:
Example Introduction to Programming (in C++) Loops Assume the following specification: Input: read a number N > 0 Output: write the sequence 1 2 3 N (one number per line) Jordi Cortadella, Ricard Gavaldà,
ASCII Encoding. The char Type. Manipulating Characters. Manipulating Characters
The char Type ASCII Encoding The C char type stores small integers. It is usually 8 bits. char variables guaranteed to be able to hold integers 0.. +127. char variables mostly used to store characters
Medical Image Processing on the GPU. Past, Present and Future. Anders Eklund, PhD Virginia Tech Carilion Research Institute [email protected].
Medical Image Processing on the GPU Past, Present and Future Anders Eklund, PhD Virginia Tech Carilion Research Institute [email protected] Outline Motivation why do we need GPUs? Past - how was GPU programming
CHAPTER 3: DIGITAL IMAGING IN DIAGNOSTIC RADIOLOGY. 3.1 Basic Concepts of Digital Imaging
Physics of Medical X-Ray Imaging (1) Chapter 3 CHAPTER 3: DIGITAL IMAGING IN DIAGNOSTIC RADIOLOGY 3.1 Basic Concepts of Digital Imaging Unlike conventional radiography that generates images on film through
DIGITAL IMAGE PROCESSING AND ANALYSIS
DIGITAL IMAGE PROCESSING AND ANALYSIS Human and Computer Vision Applications with CVIPtools SECOND EDITION SCOTT E UMBAUGH Uffi\ CRC Press Taylor &. Francis Group Boca Raton London New York CRC Press is
Introduction to acoustic imaging
Introduction to acoustic imaging Contents 1 Propagation of acoustic waves 3 1.1 Wave types.......................................... 3 1.2 Mathematical formulation.................................. 4 1.3
Convolution, Correlation, & Fourier Transforms. James R. Graham 10/25/2005
Convolution, Correlation, & Fourier Transforms James R. Graham 10/25/2005 Introduction A large class of signal processing techniques fall under the category of Fourier transform methods These methods fall
Brent A. Perdue. July 15, 2009
Title Page Object-Oriented Programming, Writing Classes, and Creating Libraries and Applications Brent A. Perdue ROOT @ TUNL July 15, 2009 B. A. Perdue (TUNL) OOP, Classes, Libraries, Applications July
Spike-Based Sensing and Processing: What are spikes good for? John G. Harris Electrical and Computer Engineering Dept
Spike-Based Sensing and Processing: What are spikes good for? John G. Harris Electrical and Computer Engineering Dept ONR NEURO-SILICON WORKSHOP, AUG 1-2, 2006 Take Home Messages Introduce integrate-and-fire
Confidence Intervals for the Difference Between Two Means
Chapter 47 Confidence Intervals for the Difference Between Two Means Introduction This procedure calculates the sample size necessary to achieve a specified distance from the difference in sample means
High-speed image processing algorithms using MMX hardware
High-speed image processing algorithms using MMX hardware J. W. V. Miller and J. Wood The University of Michigan-Dearborn ABSTRACT Low-cost PC-based machine vision systems have become more common due to
Face detection is a process of localizing and extracting the face region from the
Chapter 4 FACE NORMALIZATION 4.1 INTRODUCTION Face detection is a process of localizing and extracting the face region from the background. The detected face varies in rotation, brightness, size, etc.
Algorithms for the resizing of binary and grayscale images using a logical transform
Algorithms for the resizing of binary and grayscale images using a logical transform Ethan E. Danahy* a, Sos S. Agaian b, Karen A. Panetta a a Dept. of Electrical and Computer Eng., Tufts University, 161
Time Domain and Frequency Domain Techniques For Multi Shaker Time Waveform Replication
Time Domain and Frequency Domain Techniques For Multi Shaker Time Waveform Replication Thomas Reilly Data Physics Corporation 1741 Technology Drive, Suite 260 San Jose, CA 95110 (408) 216-8440 This paper
Lecture 5: Variants of the LMS algorithm
1 Standard LMS Algorithm FIR filters: Lecture 5: Variants of the LMS algorithm y(n) = w 0 (n)u(n)+w 1 (n)u(n 1) +...+ w M 1 (n)u(n M +1) = M 1 k=0 w k (n)u(n k) =w(n) T u(n), Error between filter output
Compiler Construction
Compiler Construction Lecture 1 - An Overview 2003 Robert M. Siegfried All rights reserved A few basic definitions Translate - v, a.to turn into one s own language or another. b. to transform or turn from
Chapter 3 RANDOM VARIATE GENERATION
Chapter 3 RANDOM VARIATE GENERATION In order to do a Monte Carlo simulation either by hand or by computer, techniques must be developed for generating values of random variables having known distributions.
PRACTICAL GUIDE TO DATA SMOOTHING AND FILTERING
PRACTICAL GUIDE TO DATA SMOOTHING AND FILTERING Ton van den Bogert October 3, 996 Summary: This guide presents an overview of filtering methods and the software which is available in the HPL.. What is
Interpolation of RGB components in Bayer CFA images
Interpolation of RGB components in Bayer CFA images Demosaicing of Bayer-sampled color images Problem: Most digital color cameras, capture only one color component at each spatial location. The remaining
7.7 Case Study: Calculating Depreciation
7.7 Case Study: Calculating Depreciation 1 7.7 Case Study: Calculating Depreciation PROBLEM Depreciation is a decrease in the value over time of some asset due to wear and tear, decay, declining price,
Performance Comparison of Elliptic Curve and RSA Digital Signatures
Performance Comparison of Elliptic Curve and RSA Digital Signatures Nicholas Jansma [[email protected]] Brandon Arrendondo [[email protected]] April 28, 2004 Abstract. This paper compares
Image Processing & Video Algorithms with CUDA
Image Processing & Video Algorithms with CUDA Eric Young & Frank Jargstorff 8 NVIDIA Corporation. introduction Image processing is a natural fit for data parallel processing Pixels can be mapped directly
C++FA 5.1 PRACTICE MID-TERM EXAM
C++FA 5.1 PRACTICE MID-TERM EXAM This practicemid-term exam covers sections C++FA 1.1 through C++FA 1.4 of C++ with Financial Applications by Ben Van Vliet, available at www.benvanvliet.net. 1.) A pointer
Drawing a histogram using Excel
Drawing a histogram using Excel STEP 1: Examine the data to decide how many class intervals you need and what the class boundaries should be. (In an assignment you may be told what class boundaries to
Agilent Creating Multi-tone Signals With the N7509A Waveform Generation Toolbox. Application Note
Agilent Creating Multi-tone Signals With the N7509A Waveform Generation Toolbox Application Note Introduction Of all the signal engines in the N7509A, the most complex is the multi-tone engine. This application
V850E2/ML4 APPLICATION NOTE. Performance Evaluation Software. Abstract. Products. R01AN1228EJ0100 Rev.1.00. Aug. 24, 2012
APPLICATION NOTE V850E2/ML4 R01AN1228EJ0100 Rev.1.00 Abstract This document describes a sample code that uses timer array unit A (TAUA) of the V850E2/ML4 to evaluate performance of the user-created tasks
Forensic Image Processing. www.martinojerian.com
Forensic Image Processing www.martinojerian.com Forensic Image Processing Lesson 1 An introduction on digital images Purpose of the course What is a digital image? What use can images have for investigative
Lecture 3. Arrays. Name of array. c[0] c[1] c[2] c[3] c[4] c[5] c[6] c[7] c[8] c[9] c[10] c[11] Position number of the element within array c
Lecture 3 Data structures arrays structs C strings: array of chars Arrays as parameters to functions Multiple subscripted arrays Structs as parameters to functions Default arguments Inline functions Redirection
Time series analysis Matlab tutorial. Joachim Gross
Time series analysis Matlab tutorial Joachim Gross Outline Terminology Sampling theorem Plotting Baseline correction Detrending Smoothing Filtering Decimation Remarks Focus on practical aspects, exercises,
Armstrong Atlantic State University Engineering Studies MATLAB Marina Image Processing Primer
Armstrong Atlantic State University Engineering Studies MATLAB Marina Image Processing Primer Prerequisites The Image Processing Primer assumes nowledge of the MATLAB IDE, MATLAB help, arithmetic operations,
Blind Deconvolution of Barcodes via Dictionary Analysis and Wiener Filter of Barcode Subsections
Blind Deconvolution of Barcodes via Dictionary Analysis and Wiener Filter of Barcode Subsections Maximilian Hung, Bohyun B. Kim, Xiling Zhang August 17, 2013 Abstract While current systems already provide
Automatic determination of particle size distribution
Automatic determination of particle size distribution ImageJ is a free, very versatile program package for image processing and manipulation which runs under Java. It can be downloaded from: http://rsb.info.nih.gov/ij/download.html.
