大作业数字图像处理.docx
《大作业数字图像处理.docx》由会员分享,可在线阅读,更多相关《大作业数字图像处理.docx(18页珍藏版)》请在冰豆网上搜索。
大作业数字图像处理
数字图像处理
(F013024)
学号:
姓名:
签名:
成绩:
2014年1月
大作业一:
图像类型转换
要求:
从真彩图像提取色调、饱和度和亮度图像。
原图:
图1.1原图
提取结果:
图1.2h色调图像
图1.3s饱和度图像
图1.4v亮度图像
提取程序:
clearall
closeall
tu1=imread('1.jpg');%读取原始图像
%tu1x=imresize(tu1,0.2);imwrite(tu1x,'C:
\1\1x.jpg')
hsv=rgb2hsv(tu1);
h=hsv(:
:
1);%提取3个分量图像
s=hsv(:
:
2);
v=hsv(:
:
3);
figure,imshow(h);title('h色调图像');
%hx=imresize(h,0.2);imwrite(hx,'C:
\1\1hx.jpg')%s缩小图片,存储
figure,imshow(s);title('s饱和度图像');
%sx=imresize(s,0.2);imwrite(sx,'C:
\1\1sx.jpg')
figure,imshow(v);title('v亮度图像');
%vx=imresize(v,0.2);imwrite(vx,'C:
\1\1vx.jpg')
大作业二:
彩色图像增强
要求:
采用均衡化、局部均衡化和灰度调节对真彩图像进行亮度增强。
原图:
图2.1原图
增强结果:
图2.2均衡化亮度增强
图2.3局部均衡化亮度增强
图2.4灰度调节亮度增强
增强程序:
clearall
closeall
tu2=imread('2.jpg');
%tu2x=imresize(tu2,0.2);imwrite(tu2x,'C:
\1\2x.jpg')
hsv=rgb2hsv(tu2);%转换到HSV
v=hsv(:
:
3);%提取亮度分量
hsv(:
:
3)=histeq(v,64);%对亮度进行直方图均衡,灰度级数64,默认值为64。
tu21=hsv2rgb(hsv);%转回真彩
figure,imshow(tu21);title('均衡化');
%tu21x=imresize(tu21,0.2);imwrite(tu21x,'C:
\1\21x.jpg')
hsv(:
:
3)=adapthisteq(v);%对亮度进行自适应均衡化(局部均衡化处理)
tu22=hsv2rgb(hsv);%转回真彩
figure,imshow(tu22);title('局部均衡化');
%tu22x=imresize(tu22,0.2);imwrite(tu22x,'C:
\1\22x.jpg')
hsv(:
:
3)=imadjust(v,[],[0.31],0.6);%对亮度进行灰度调节
tu23=hsv2rgb(hsv);%转回真彩
figure,imshow(tu23);title('灰度调节图像');
%tu23x=imresize(tu23,0.2);imwrite(tu23x,'C:
\1\23x.jpg')
大作业三:
图像算术操作
要求:
把两幅图像进行相加操作和相乘操作。
原图:
图3.1待相加和乘的第一幅图
图3.2待相加和乘的第二幅图
操作结果:
图3.3相加的图像
图3.4相乘的图像
操作程序:
clearall
closeall
tu3a=imread('3a.jpg');
%tu3ax=imresize(tu3a,0.2);imwrite(tu3ax,'C:
\1\3ax.jpg')
tu3b=imread('3b.jpg');
%tu3bx=imresize(tu3b,0.2);imwrite(tu3bx,'C:
\1\3bx.jpg')
ad=imadd(tu3a,tu3b);%两图相加
figure,imshow(ad);title('两图相加');
%adx=imresize(ad,0.2);imwrite(adx,'C:
\1\3adx.jpg')
a1=uint16(tu3a);%扩展到16位,不扩展处理后的图偏白
b1=uint16(tu3b);%扩展到16位
%%效果不好,不如溢出的好看
%ad2=imadd(a1,b1);%扩展到16位后再两图相加
%mx=max(max(max(ad2)));
%ad3=ad2/mx*255;
%ad3=uint8(ad3);
%figure,imshow(ad3);title('扩展后两图相加');
mul=immultiply(a1,b1);%两图相乘
figure,imshow(mul);title('两图相乘')
%mulx=imresize(mul,0.2);;imwrite(mulx,'C:
\1\3mulx.png')
大作业四:
图像边缘检测
要求:
采用两种方法对图像中的汉字进行提取。
原图:
图4.1原图
提取结果:
图4.2HSV色调分量经Sobel算子进行边缘检测后
图4.3对HSV三种分量卷积运算后再进行边缘检测的HSV图
提取程序:
clearall
closeall
tu4=imread('4.jpg');
%tu4x=imresize(tu4,0.2);imwrite(tu4x,'C:
\1\4x.jpg')
I=rgb2hsv(tu4);
a=I(:
:
1);
n=0.01;
by=edge(a,'Sobel',n);%阈值选择n,用Sobel算子进行边缘检测
figure,imshow(by);
%imwrite(by,'C:
\1\4by.jpg')%此图不缩小,否则将损失图片重要信息
a=I(:
:
1);
n=0.1;
b=[01;-10]/n;
c=[10;0-1]/n;%参数n为增强图像对比度
d=conv2(a,b,'same');%二维卷积运算函数,计算数组a和b的卷积,参数'same'使得得到的图像与原图大小相等。
d=abs(d);%处理水平方向算子的结果
e=conv2(a,c,'same');
e=abs(e);%处理垂直方向算子的结果
f=max(d,e);%取水平及垂直方向上的大值
cc(:
:
1)=f;
a=I(:
:
2);
d=conv2(a,b,'same');%二维卷积运算函数,计算数组a和b的卷积,参数'same'使得得到的图像与原图大小相等。
d=abs(d);%处理水平方向算子的结果
e=conv2(a,c,'same');
e=abs(e);%处理垂直方向算子的结果
f=max(d,e);%取水平及垂直方向上的大值
cc(:
:
2)=f;
a=I(:
:
3);
d=conv2(a,b,'same');%二维卷积运算函数,计算数组a和b的卷积,参数'same'使得得到的图像与原图大小相等。
d=abs(d);%处理水平方向算子的结果
e=conv2(a,c,'same');
e=abs(e);%处理垂直方向算子的结果
f=max(d,e);%取水平及垂直方向上的大值
cc(:
:
3)=f;
figure,imshow(cc);%显示hsv格式的图
%ccx=imresize(cc,0.2);imwrite(ccx,'C:
\1\4ccx.jpg')
%cc=hsv2rgb(cc);%hsv转到rgb
%figure,imshow(cc);%显示rgb格式的图
大作业五:
图像低通滤波
要求:
采用均值滤波、中值滤波和理想低通滤波对图像进行降噪。
原图:
图5.1原图
降噪结果:
图5.2均值滤波
图5.3RGB中值滤波
图5.4灰度中值滤波
图5.5理想低通滤波
降噪程序:
clearall
closeall
tu5=imread('5.bmp');
gray=rgb2gray(tu5);%转成灰度图
suanzi=fspecial('average',[4,10]);%建立预定义的滤波算子,[]代表模板尺寸,默认值为[3,3]
junzhi=imfilter(tu5,suanzi);%进行均值滤波(只针对灰度图)
figure,imshow(junzhi),title('均值滤波后的图');
%imwrite(junzhi,'C:
\1\5junzhi.jpg')%此图不缩小,否则将损失图片重要信息
r=tu5(:
:
1);%分离出RGB的三个颜色分量,再中值滤波
g=tu5(:
:
2);
b=tu5(:
:
3);
tu(:
:
1)=medfilt2(r);%进行RGB中值滤波
tu(:
:
2)=medfilt2(g);
tu(:
:
3)=medfilt2(b);
figure,imshow(tu),title('RGB中值滤波后的图');%显示滤波后的图象
%imwrite(tu,'C:
\1\5RGB中值.jpg')%此图不缩小,否则将损失图片重要信息
tu2=medfilt2(gray,[3,8]);%进行中值滤波
figure,imshow(tu2),title('灰度中值滤波后的图');%显示滤波后的图象
%imwrite(tu2,'C:
\1\5灰度中值.jpg')%此图不缩小,否则将损失图片重要信息
rr=fftshift(fft2(gray));%傅里叶变换并转移
[N1,N2]=size(rr);
n1=fix(N1/2);
n2=fix(N2/2);
d0=20;
fori=1:
N1
forj=1:
N2
d=sqrt((i-n1)^2+(j-n2)^2);
if(d>d0)
h=0;
else
h=1;
end
rr(i,j)=h*rr(i,j);
end
end
ff2=real(ifft2(ifftshift(rr)));%逆变换
figure,imshow(ff2,[]),title('理想低通滤波之后的结果');%显示滤波后的图象
ff3=im2uint8(mat2gray(ff2));%数据转换,防止保存图片为全白
%imwrite(ff3,'C:
\1\5理想低通滤波.jpg')%此图不缩小,否则将损失图片重要信息