搜索
您的当前位置:首页正文

实验二 图像直方图分析

来源:知库网
实验二 图像直方图分析

一.实验目的及要求

1.了解MATLAB的操作环境和基本功能。

2.掌握MATLAB中图像增强与平滑的函数的使用方法。 3.加深理解图像增强与平滑的算法原理。

二、实验内容

(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。(可将每段程序保存为一个.m文件)

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

imshow(I) % an array named 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.

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.直接灰度变换 clear all; close all

I = imread('cameraman.tif'); J = imadjust(I,[0 0.2],[0.5 1]); imshow(I) figure, imshow(J)

[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. 图片:

注意:imadjust() 功能: 调整图像灰度值或颜色映像表,也可实现伽马校正。 语法: J = imadjust(I,[low_inhigh_in],[low_outhigh_out],gamma) newmap = imadjust(map,[low_inhigh_in],[low_outhigh_out],gamma) RGB2 = imadjust(RGB1,...)

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) 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);

(二)采用MATLAB底层函数编程实现 1.灰度变换之动态范围扩展

假定原图像f(x, y)的灰度范围为[a, b],希望变换后图像g(x, y)的灰度范围扩展至[c, d],则线性变换可表示为:

g(x,y)dc[f(x,y)a]c ba用MATLAB底层函数编程实现上述变换函数。观察图像‘ pout.tif’的灰度直方图,

选择合适的参数[a, b]、[c, d]对图像‘pout.tif’进行灰度变换,以获得满意的视觉效果。 程序代码:

图片:

2.非锐化掩蔽和高斯滤波

从原图像中减去其非锐化(平滑过的)图像的过程称为非锐化掩蔽,其基本步骤为:

⑴对原图像进行平滑滤波得到模糊图像f(x,y);

⑵从原图像中减去模糊图像,产生的差值图像称为模板gmask(x,y); ⑶将模板加到原图像上,得到锐化后的图像g(x,y)。即,

gmask(x,y)f(x,y) - f(x,y)

g(x,y)f(x,y)kgmask(x,y);k1

用MATLAB函数编程实现上述功能。

程序代码:

三、实验设备

1.计算机;

2.MATLAB6.5及以上;

四、预习与思考

1.预习实验内容,阅读教材熟悉实验原理;

2.查阅资料,熟悉MATLAB的操作环境和基本功能。熟悉实验中涉及的有关函数。

3.利用课余时间,用MATLAB底层函数编程实现实验内容(二)中的灰度线性变换。

4.你能否给出实现样例程序功能的其它方法?

五、实验报告要求

1. 简述试验的目的和试验原理;

2. 叙述各段程序功能,改变有关函数的参数,分析比较实验结果。 3. 打印出所编写的实验程序。 4. 写出本实验的心得体会及意见。

六、实验心得

本次实验直接实验指导书上的步骤,将程序敲进MATLAB中,就可以获得实验结果图。对于底层函数编程还是需要自己思考,感觉比较困难,在同学们的帮助下最后也出来实验结果,感觉很开心。通过本次实验让我掌握了很多知识,了解了MATLAB的操作环境和基本功能并加深了理解图像增强与平滑的算法原理。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top