课 程 数字信号处理 实验名称 图像增强与平滑
院 系____信息科学与工程学院 ___ 专业班级__ 电科1001 __ 姓 名______ __王闯______ 学 号______201048360119___ 指导老师: 王贵才 日 期 2013.05.16
一.实验目的
1.了解MATLAB的操作环境和基本功能。
2.掌握MATLAB中图像增强与平滑的函数的使用方法。 3.加深理解图像增强与平滑的算法原理。
二.实验内容及要求
(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
1.直方图均衡化
clear all; close all % Clear the MATLAB workspace of any variables
% and close open figure windows.
I = imread('pout.tif'); % Reads the sample images ‘ pout.tif’, and stores it in
% an array named I
imshow(I) %display the image
figure, imhist(I) % Create a histogram of the image and display it in
% a new figure window.
[I2,T] = histeq(I); % Histogram equalization.
%[J,T] = histeq(I,...) returns the grayscale
transformation that maps gray levels in the %intensity image I to gray levels in J.
figure, imshow(I2) % Display the new equalized image, I2, in a new figure window.
figure, imhist(I2) % Create a histogram of the equalized image I2. figure,plot((0:255)/255,T); % plot the transformation curve.
imwrite (I2, 'pout2.png'); % Write the newly adjusted image I2 to a disk file named
% ‘pout2.png’.
imfinfo('pout2.png') % Check the contents of the newly written file
2.直接灰度变换
注意:imadjust() clear all; close all
功能:调整图像灰度值或颜色映像表,也可实现伽马校正。 I = imread('cameraman.tif');
J = imadjust(I,[0 0.2],[0.5 1]); 语法: J = imadjust(I,[low_in high_in],[low_out high_out],gamma) imshow(I)
newmap = imadjust(map,[low_in high_in],[low_out high_out],gamma) figure, imshow(J)
RGB2 = imadjust(RGB1,...) [X,map] = imread('forest.tif'); figure,imshow(X,map) I2 = ind2gray(X,map);
J2 = imadjust(I2,[],[],0.5); figure,imshow(I2) figure, imshow(J2)
J3 = imadjust(I2,[],[],1.5); figure, imshow(J3)
help imadjust % Display the imadjust() function information.
3.空域平滑滤波(模糊、去噪)
clear all; close all I = imread('eight.tif'); h1 = ones(3,3) / 9; h2 = ones(5,5) / 25; I1 = imfilter(I,h1); I2 = imfilter(I,h2);
figure(1), imshow(I), title('Original Image');
figure(2), imshow(I1), title('Filtered Image With 3*3 ') figure(3), imshow(I2), title('Filtered Image With 5*5 ') % 加入Gaussian 噪声
J1 = imnoise(I,'gaussian',0,0.005); % 加入椒盐噪声
J2 = imnoise(I,'salt & pepper',0.02); % 对J1、J2进行平均值平滑滤波 K1 = imfilter(J1,fspecial('average',3)); K2 = imfilter(J2,fspecial('average',3)); figure(4);
subplot(2,2,1), imshow(J1) , title('gaussian'); subplot(2,2,2), imshow(J2), title('salt & pepper '); subplot(2,2,3), imshow(K1), title('average '); subplot(2,2,4), imshow(K2); % 对J1、J2进行中值滤波 K3 = medfilt2(J1,[3 3]); K4 = medfilt2(J2,[3 3]); figure(5);
subplot(2,2,1), imshow(J1) , title('gaussian'); subplot(2,2,2), imshow(J2), title('salt & pepper '); subplot(2,2,3), imshow(K3), title(' Median filtering '); subplot(2,2,4), imshow(K4)
4.空域锐化滤波
clear all; close all I = imread('moon.tif'); w=fspecial('laplacian',0.2) w8=[1,1,1;1,-8,1;1,1,1] I1= imfilter(I,w, 'replicate');
figure(1); imshow(I), title('Original Image'); figure(2), imshow(I1), title('Laplacian Image'); f = im2double(I);
f1= imfilter(f,w, 'replicate');
figure(3), imshow(f1,[]), title('Laplacian Image'); f2= imfilter(f,w8, 'replicate'); f4 = f-f1; f8 = f-f2;
figure(4), imshow(f4); figure(5), imshow(f8);
w =0.1667 0.6667 0.1667 0.6667 -3.3333 0.6667 0.1667 0.6667 0.1667 w8 = 1 1 1 1 -8 1 1 1 1
5.图像的伪彩色处理—密度分割
clear all, close all
I = imread('ngc4024m.tif'); X = grayslice(I,16);
imshow(I), title('Original Image')
figure, imshow(X,jet(16)), title('Index Color Image')
三.实验过程及结果
采用MATLAB底层函数编程实现以下灰度线性变换
假定原图像f(x, y)的灰度范围为[a, b],希望变换后图像 g(x, y)的灰度范围扩展至[c, d],则线性变换可表示为:
dcg(x,y)[f(x,y)a]c
ba 用MATLAB底层函数编程实现上述变换函数。观察图像‘ pout.tif’的灰度直方图,选择合适的参数[a, b]、[c, d]对图像‘pout.tif’进行灰度变换,以获得满意的视觉效果。
所编写的程序代码如下:(当原图像灰度a=0.4;b=0.9;变换后的图像灰度c=0.6;d=0.7)
clear all; close all
I = imread('pout.tif'); I=double(I)/255;
II=5*[I-0.4]+0.6;%a=0.4;b=0.9;c=0.6;d=0.7
subplot(221);imshow(I) subplot(222);imshow(II)
subplot(223);imhist(I) subplot(224);imhist(II)
其图像‘pout.tif’记过灰度变换后的图像结果为:
当原图像的灰度a=0.4,b=0.5;;变换后的图像灰度c=0.5,d=0.95 其图像‘pout.tif’记过灰度变换后的图像结果为:
当原图像的灰度a=0.42,b=0.52;;变换后的图像灰度c=0.5,d=0.95时 其图像‘pout.tif’记过灰度变换后的图像结果为:
四.实验中的问题及心得
本次实验学习了Matlab软件的分析方法,主要学习了图像的直方图均衡化、直接灰度变换、空域平滑滤波(模糊、去噪)、空域锐化滤波和图像的伪彩色处理—密度分割,在实验的最后自己完成了一张图像的灰度变换,让自己感触很深,在这期间,也学到了很多关于Matlab软件的语句。实验中所遇到的问题是不清楚一些代码的用法,及其作用是什么,后来问了身边的同学和老师,才懂得了用法。因此本次实验对Matlab软件及图片处理的学习提供了一次不错的机会。
因篇幅问题不能全部显示,请点此查看更多更全内容