Anda di halaman 1dari 21

Project Report on Digital Image Processing

By AkarshRastogi (UG201211003)

INDIAN INSTITUTE OF TECHNILOGY JODHPUR Jodhpur 342001, INDIA

DIGITAL IMAGE PROCESSING

Digital image processing is the use of computer algorithms to perform image processing on digital images. As a subcategory or field of digital signal processing, digital image processing has many advantages over analog image processing. It allows a much wider range of algorithms to be applied to the input data and can avoid problems such as the build-up of noise and signal distortion during processing. Since images are defined over two dimensions digital image processing may be modeled in the form of multidimensional systems.

POINTS COVERED

Image Compression
Lossy Image Compression x JPEG image compession Lossless Image Compression

Image Enhancement
Spatial Intensity Transformation Frequency Filter

Image Restoration
Noise Estimation and their effects x Weiner Filtering

Image Compression
Image compression addresses the problem of reducing the amount of data required to represent a digital image. Compression is achieved by the removal of one or more of the three basic redundancies Coding redundancy, which is present when less than optimal code words are used Interpixel redundancy, which results from correlations between the pixels of an image Psychovisual redundancy, which is due to data that is ignored by the Human Visual System. Image compression can belossy or lossless. Lossy Compression are especially suitable for natural images such as photographs in applications where minor (sometimes imperceptible) loss of fidelity is acceptable to achieve a substantial reduction in bit rate. Lossless Compression is preferred for archival purposes and often for medical imaging, technical drawings, clip art or comics.

JPEG Image Compression


JPEG is a commonly used method of lossy compression for digital images It includesfollowing steps:
Construct nxnsubimage s Symbol decoder Forward Transform Quantizer Symbol encoder Compressed image

Input image

Compressed image

Inverse transform

Merge nxn images

Decompressed image

Construct nxnsubmatrices
Image is a two dimensional M x N matrices . It is very difficult for computer to handle full image at once so the whole image is divided into nxnsubimages. Forward Transform Each sub image is transformed through Discrete Cosine Transform.

Quantization
This is the main step behind compression. Also, this is the step where major loss of data takes place. Quantization decreases the number of different values.

Symbol Encoder
JPEG encodes through Hoffman Encoding which further compresses the image. It finally outputs the compressed image.

Symbol Decoder
This is the first step while decoding the compressed image.

Inverse Transform
Then the inverse transform of the matrix is taken.

Merge nxnsubimages
Finally all the subimages are merged and the decompressed image is obtained.

Matlab Code of JPEG


%%%%%%%%%%%%%%%%%%image compression%%%%%%%%%%%%%%%%% %read original image original_image = imread ('IMG_5809.bmp'); %transform image to ycbcr format new_image= rgb2ycbcr(original_image); % seperating all 3 frames seperatly y_image=new_image(:,:,1); cb_image=new_image(:,:,2); cr_image=new_image(:,:,3); % changing image to small matrices cell_size= 8; repeat_height=floor(size(y_image,1)/cell_size); repeat_width=floor(size(y_image,2)/cell_size); repeat_height_mat = repmat(cell_size, [1 repeat_height]); repeat_width_mat = repmat(cell_size, [1 repeat_width]); y_subimg = mat2cell(y_image ,repeat_height_mat,repeat_width_mat); cb_subimg = mat2cell(cb_image ,repeat_height_mat,repeat_width_mat); cr_subimg = mat2cell(cr_image ,repeat_height_mat,repeat_width_mat);

%discrete cosine transform fori=1:repeat_height for j=1:repeat_width y_subimg{i, j} = dct2(y_subimg{i, j});

cb_subimg{i, j} = dct2(cb_subimg{i, j}); cr_subimg{i, j} = dct2(cr_subimg{i, j});

end end %quantization quantization_factor = 16; fori=1:repeat_height for j=1:repeat_width y_subimg{i, j} = y_subimg{i, j} / quantization_factor; cb_subimg{i, j} = cb_subimg{i, j} / quantization_factor; cr_subimg{i, j} = cr_subimg{i, j} / quantization_factor; end end fori=1:repeat_height for j=1:repeat_width y_subimg{i, j}(:, 5:8) = 0; y_subimg{i, j}(5:8, :) = 0; cb_subimg{i, j}(:, 5:8) = 0; cb_subimg{i, j}(5:8, :) = 0; cr_subimg{i, j}(:, 5:8) = 0; cr_subimg{i, j}(5:8, :) = 0; end end y_compimg = uint8(cell2mat(y_subimg )) * quantization_factor; cb_compimg = uint8(cell2mat(cb_subimg)) * quantization_factor; cr_compimg = uint8(cell2mat(cr_subimg)) * quantization_factor; %to assign no of row comp_img=original_image; % now assign values to compressed image comp_img(:,:,1)=y_compimg; comp_img(:,:,2)=cb_compimg; comp_img(:,:,3)=cr_compimg;

%%%%%%%%%%%%%%%%%

image decompression %%%%%%%%%%%%%%%%

%Dequanitzation fori=1:repeat_height for j=1:repeat_width y_subimg{i, j} = y_subimg{i, j} * quantization_factor; cb_subimg{i, j} = cb_subimg{i, j} * quantization_factor; cr_subimg{i, j} = cr_subimg{i, j} * quantization_factor; end end

%inverse dct fori=1:repeat_height for j=1:repeat_width y_subimg{i, j} = idct2(y_subimg{i, j}); cb_subimg{i, j} = idct2(cb_subimg{i, j}); cr_subimg{i, j} = idct2(cr_subimg{i, j}); end end %%Stich sub images into single image y_image = cell2mat(y_subimg); cb_image = cell2mat(cb_subimg); cr_image = cell2mat(cr_subimg); %%Convert to ycbcr_img(:, ycbcr_img(:, ycbcr_img(:, RGB space :, 1) = y_image; :, 2) = cb_image; :, 3) = cr_image;

final_img = ycbcr2rgb(ycbcr_img); figure(1); imshow(original_img); figure(2); imshow(final_img);

Result of JPEG Compression Uncompressed Image (51.2 Mb)

Compressed Image (36 Mb)

Data lost after decompression=15.2 Mb

Image Enhancement
Quality of image can be enhanced through changes on the basis of histogram. x Spatial Intensity Transformation Spatial domain techniques operate directly to the pixels of an image as opposed, for example to the frequency domain where operations are performed on the Fourier Transform of an image, rather than on image itself.

Basic Transformation Program on Matlab


%% Basic Transformation on Matlab img=imread('IMG_5809.bmp'); %%Converting image to grayscale img=rgb2gray(img); %%Observing image and its histogram figure(1); imshow(img); figure(2); imhist(img); %%Histogram is towards right hand side hence colours are lighter new_img=img-50; %%new image and its histogram figure(3); imshow(new_img); figure(4); imhist(new_img); %%Equalising histogram newimage=histeq(img); figure(5); imshow(newimage); figure(6); imhist(newimage);

Result of spatial Transformation


Initial image

Initial Histogram

Final Image

Final Histogram

After histogram equalization, image

After histogram equalization, histogram

x Frequency Filter
Frequency filters process an image in the frequency domain. The image is Fourier transformed, multiplied with the filter function and then retransformed into the spatial domain. Attenuating high frequencies results in a smoother image in the spatial domain, attenuating low frequencies enhances the edges. All frequency filters can also be implemented in the spatial domain and, if there exists a simple kernel for the desired filter effect, it is computationally less expensive to perform the filtering in the spatial domain. Frequency filtering is more appropriate if no straightforward kernel can be found in the spatial domain, and may also be more efficient.

Matlab Code for basic Frequency Filter


I=imread('eight.tif'); J=imnoise(I,'gaussian',0,.01); [M,N]=size(J); u=0:M-1; v=0:N-1; idx= find(u>M/2); u(idx)=u(idx)-M; idy=find(v>N/2); v(idy)=v(idy)-N; [V,U]=meshgrid(v,u); K=fft2(J,M,N); D0=.05*2500; H=exp(-(U.^2 + V.^2)/(2*(D0^2))); G=(H).*(K); L=real(uint8(ifft2(G))); figure(1); imshow(J); figure(2); imshow(L);

Result of Low pass Frequency Filter Initial image

Filtered image

Image Restoration
The objective of image restoration is to improve image in some predefined sense. Restoration attempts to recover or reconstruct an image that has been degraded by using a priori knowledge of the degradation phenomenon. Thus restoration techniques are oriented toward modelling the degradation and applying the inverse process in order to recover the original image.

Effect of noise on histogram


I=imread('eight.tif'); A=imnoise(I,'gaussian'); B=imnoise(I,'poisson'); C=imnoise(I,'salt& pepper',.5); D=imnoise(I,'speckle'); figure(1); imhist(I); figure(2); imhist(A); figure(3); imhist(B); figure(4); imhist(C); figure(5); imhist(D);

Original Histogram

Gaussian noise

Poisson noise

Speckle noise

Simple code of Weiner Filtering of a noised image


I=imread('saturn.png'); I=rgb2gray(I); J=imnoise(I,'gaussian',0,0.05); K=wiener2(J,[10,10]); H=fspecial('disk',10); blurred=imfilter(J,H,'replicate'); figure(1); imshow(I); figure(2); imshow(J); figure(3); imshow(K); figure(4); imshow(blurred);

Result of Weiner Filtering


Original Image

Noised image

Weiner Filter

Disk Filter

References
x Websites
x x x x http://en.wikipedia.org/wiki/Digital_image_processing www.ipol.im www.imageprocessingplace.com http://nboddula.blogspot.in/2013/05/image-compression-how-jpegworks.html

x Books
x Digital Image Processing, Gonzalez and Woods