数字图像处理实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字图像处理报告

章鱼哥

实验项目一(matlab)

实验要求:Fig1.bmp是一副亮度和对比度均很低的图像,试用插值外推的图像增强方法改善图像的质量,使花朵和树叶的颜色更加鲜艳润泽。

实验代码:

% 插值与外推

clear all

close all

I=imread('实验项目一.png');

A=double(I);

Igray=double(rgb2gray(I));

Ig3=A;

img=A;

Ilow=A;

Ig3(:,:,1)=Igray; % RGB灰度图

Ig3(:,:,2)=Igray;

Ig3(:,:,3)=Igray;

W=ones(11,11)/121;

Ilow=double(imfilter(Ig3,W)); % 模糊图像

a=[1 1.5 2.0 2.5 3.0 3.5 ];

figure

for k=1:6 % 通过模糊图进行处理

img=(1-a(k)).*Ilow+a(k).*A;

subplot(2,3,k);imshow(uint8(img),[]); title(['综合修正:系数=',num2str(a(k))]);

end

实验结果

实验项目二(matlab或c/c++)

实验要求:试用最邻近插值和双线性插值对Fig2.bmp进行缩小和放大操作。先缩小12倍,再放大12倍。描述图像的变化,分析变化的原因,并给出对两种插值方法的评价。

实验原理:

1. 最邻近插值(近邻取样法)

最邻近插值是一种简单的插值算法,也称为零阶插值。它输出的像素灰度值就等于距离它映射到的位置最近的输入像素的灰度值。对于通过反向变换得到的的一个浮点坐标,对其进行简单的取整,得到一个整数型坐标,这个整数型坐标对应的像素值就是目的像素的像素值,也就是说,取浮点坐标最邻近的左上角点(对于DIB是右上角,因为它的扫描行是逆序存储的)对应的像素值。可见,最邻近插值简单且直观,但得到的图像质量不高;当图像中包含像素之间灰度级有变化的细微结构时,最邻近查值法会在图像中产生人为的加工痕迹。

2. 双线性插值

对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v),其中i、j均为非负整数,u、v为[0,1)区间的浮点数,则这个像素得值 f(i+u,j+v) 可由原图像中坐标为 (i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围四个像素的值决定,即:

f(i+u,j+v) = (1-u)(1-v)f(i,j) + (1-u)vf(i,j+1) + u(1-v)f(i+1,j) + uvf(i+1,j+1) 其中f(i,j)表示源图像(i,j)处的的像素值,以此类推。

这就是双线性内插值法。双线性内插值法计算量大,但缩放后图像质量高,不会出现像素值不连续的的情况。由于双线性插值具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊。

实验代码:

clear all,

close all

I = imread('图片缩放.jpg');

Scale1 = 1/12; % 将图像缩小12倍

J1 = imresize(I, Scale1, 'nearest'); % 最邻近差值

J2 = imresize(I, Scale1, 'bilinear'); % 双线性插值

imshow(I), title('原图');

figure, imshow(J1), title('最邻近插值-缩小 ');

figure, imshow(J2), title('双线性插值-缩小');

Scale2 = 12; % 将图像放大12倍

J3 = imresize(J1, Scale2, 'nearest'); % 最邻近差值

J4 = imresize(J2, Scale2, 'bilinear'); % 双线性插值

figure, imshow(J3), title('最邻近插值-放大 ');

figure, imshow(J4), title('双线性插值-放大');

实验结果

实验项目三(matlab)

实验要求:试从Fig3.bmp中提取出目标物体(飞机),并将其与背景图像background.bmp

进行合成。

实验原理:

对于要从深蓝色背景中要从中提取目标物体---飞机 关键在于如何识别飞机。把背景的蓝色设为参考色 与参考色偏离差值不超过超过一定值即判定为背景像素点 把背景像素点去除掉就可以提取到飞机。先把背景图的边长各放大两倍 然后在Fig1-background中以一定的偏移量为基准 将对应像素点值替换为飞机目标物对应的像素点值。

实验代码:

%图像合并 clear all close all %读入图像

A = imread('飞机.png'); %飞机图像

B =imread('天空.png'); %背景图像

figure('Name','飞机');imshow(A);title('原始飞机图像');

figure('Name','蓝天');imshow(B);title('原始蓝天图像');

T = double(A); %临时保存飞机图

G = B; %临时保存背景图

%去除飞机图像中背景部分

[M N P] = size(T);

T11 = T(1,1,1:P);

for j = 1:1:N

for i = 1:1:M

if (sum(abs(T(i,j,1:P)-T11))<10)

T(i,j,1:P) = -1; %背景图案置为-1

else%飞机图案保持不变

end

end

end

figure('Name','飞机');imshow(T);title('去除背景的飞机图像');

%将飞机图像T与背景图案G合并

[M N P] = size(G);

ox = floor(M/10);%x方向偏移量

oy = floor(N/10); %y方向偏移量

[M N P] = size(T);

for j = 1:1:N

for i = 1:1:M

if (T(i,j,1:P) == -1) %T中背景部分跳过

else%否则填充到G中

G(i+ox,j+oy,1:P) = T(i,j,1:P);

end

end

end%原始图像

figure('Name','合成');imshow(uint8(G));title('合成图像');

实验结果:

相关文档
最新文档