数字图像处理 课程设计报告 matlab.docx
《数字图像处理 课程设计报告 matlab.docx》由会员分享,可在线阅读,更多相关《数字图像处理 课程设计报告 matlab.docx(14页珍藏版)》请在冰豆网上搜索。
![数字图像处理 课程设计报告 matlab.docx](https://file1.bdocx.com/fileroot1/2022-12/12/81073cc3-d6f2-44b5-a5c4-3de8e1fe312c/81073cc3-d6f2-44b5-a5c4-3de8e1fe312c1.gif)
数字图像处理课程设计报告matlab
数字图像处理
课程设计报告
姓名:
学号:
班级:
.net
设计题目:
图像处理
教师:
赵哲老师
提交日期:
12月29日
一、设计内容:
主题:
《图像处理》
详细说明:
对图像进行处理(简单滤镜,模糊,锐化,高斯模糊等),对图像进行处理(上下对称,左右对称,单双色显示,亮暗程度调整等),对图像进行特效处理(反色,实色混合,色彩平衡,浮雕效果,素描效果,雾化效果等),
二、涉及知识内容:
1、二值化
2、各种滤波
3、算法等
三、设计流程图
插入图片
对图片进行处理
二值化处理
重复
输出两幅图
结束
四、实例分析及截图效果:
运行效果截图:
第一步:
读取原图,并显示
closeall;clear;clc;
%清楚工作窗口clc清空变量clear关闭打开的窗口closeall
I=imread('1.jpg');
%插入图片1.jpg赋给I
imshow(I);%输出图I
I1=rgb2gray(I);%图片变灰度图
figure%新建窗口
subplot(321);%3行2列第一幅图
imhist(I1);%输出图片
title('原图直方图');%图片名称
一,图像处理模糊
H=fspecial('motion',40);
%%滤波算子模糊程度40motion运动
q=imfilter(I,H,'replicate');%imfilter实现线性空间滤波函数,I图经过H滤波处理,replicate反复复制
q1=rgb2gray(q);
imhist(q1);
title('模糊图直方图');
二,图像处理锐化
H=fspecial('unsharp');%锐化滤波算子,unsharp不清晰的
qq=imfilter(I,H,'replicate');
qq1=rgb2gray(qq);
imhist(qq1);
title('锐化图直方图');
三,图像处理浮雕(来源网络)
%浮雕图
l=imread('1.jpg');
f0=rgb2gray(l);%变灰度图
f1=imnoise(f0,'speckle',0.01);
%高斯噪声加入密度为0.01的高斯乘性噪声imnoise噪声污染图像函数speckle斑点
f1=im2double(f1);%把图像数据类型转换为双精度浮点类型
h3=1/9.*[111;111;111];
%采用h3对图像f2进行卷积滤波
f4=conv2(f1,h3,'same');
%进行sobel滤波
h2=fspecial('sobel');
g3=filter2(h2,f1,'same');%卷积和多项式相乘same相同的
k=mat2gray(g3);%实现图像矩阵的归一化操作
四,图像处理素描(来源网络)
f=imread('1.jpg');
[VG,A,PPG]=colorgrad(f);
ppg=im2uint8(PPG);
ppgf=255-ppg;
[M,N]=size(ppgf);T=200;
ppgf1=zeros(M,N);
forii=1:
M
forjj=1:
N
ifppgf(ii,jj)ppgf1(ii,jj)=0;
else
ppgf1(ii,jj)=235/(255-T)*(ppgf(ii,jj)-T);
end
end
end
ppgf1=uint8(ppgf1);
H=fspecial('unsharp');
Motionblur=imfilter(ppgf1,H,'replicate');
figure;imshow(ppgf1);
调用
function[VG,A,PPG]=colorgrad(f,T)
if(ndims(f)~=3)||(size(f,3)~=3)
error('InputimagemustbeRGB');
end
sh=fspecial('sobel');
sv=sh';
Rx=imfilter(double(f(:
:
1)),sh,'replicate');
Ry=imfilter(double(f(:
:
1)),sv,'replicate');
Gx=imfilter(double(f(:
:
2)),sh,'replicate');
Gy=imfilter(double(f(:
:
2)),sv,'replicate');
Bx=imfilter(double(f(:
:
3)),sh,'replicate');
By=imfilter(double(f(:
:
3)),sv,'replicate');
gxx=Rx.^2+Gx.^2+Bx.^2;
gyy=Ry.^2+Gy.^2+By.^2;
gxy=Rx.*Ry+Gx.*Gy+Bx.*By;
A=0.5*(atan(2*gxy./(gxx-gyy+eps)));
G1=0.5*((gxx+gyy)+(gxx-gyy).*cos(2*A)+2*gxy.*sin(2*A));
A=A+pi/2;
G2=0.5*((gxx+gyy)+(gxx-gyy).*cos(2*A)+2*gxy.*sin(2*A));
G1=G1.^0.5;
G2=G2.^0.5;
VG=mat2gray(max(G1,G2));
RG=sqrt(Rx.^2+Ry.^2);
GG=sqrt(Gx.^2+Gy.^2);
BG=sqrt(Bx.^2+By.^2);
PPG=mat2gray(RG+GG+BG);
ifnargin==2
VG=(VG>T).*VG;
PPG=(PPG>T).*PPG;
end
f1=rgb2gray(f);
imhist(f1);
title('素描图直方图');
五,图像处理实色混合(来源网络)
%实色混合
I(I<=127)=0;%对像素进行处理,若值小于等于127,置0
I(I>127)=255;%对像素进行处理,若值大于127,置255
imshow(I);
title('像素图');
I1=rgb2gray(f);
imhist(I1);
title('像素图直方图');
六,图像处理反色图
f=imread('1.jpg');
q=255-q;
imshow(q);
title('反色图');
imhist(q1);
title('反色图直方图');
七,图像处理上下对称
A=imread('1.jpg');
B=A;
[a,b,c]=size(A);
a1=floor(a/2);b1=floor(b/2);c1=floor(c/2);
B(1:
a1,1:
b,1:
c)=A(a:
-1:
a-a1+1,1:
b,1:
c);
figure
imshow(B)
title('上下对称');
A=rgb2gray(A);
figure
imhist(A)
title('上下对称直方图');
八,图像处理类左右对称
C=imread('1.jpg');
A=C;
C(1:
a,1:
b1,1:
c)=A(1:
a,b:
-1:
b+1-b1,1:
c);
figure
imshow(C)
title('左右对称');
A=rgb2gray(A);
figure
imhist(A);
title('左右对称直方图');
九,图像处理单双色显示
a=imread('1.jpg');
a1=a(:
:
1);a2=a(:
:
2);a3=a(:
:
3);
aa=rgb2gray(a);
a4=cat(3,a1,aa,aa);a5=cat(3,a1,a2,aa);
figure
subplot(121);
imshow(a4);
title('单色显示');
subplot(122);
imshow(a5);
title('双色显示');
a4=rgb2gray(a4);
a5=rgb2gray(a5);
figure
subplot(121);
imhist(a4);
title('单色显示直方图');
subplot(122);
imhist(a5);
title('双色显示直方图');
十,图像处理亮暗度调整
a=imread('1.jpg');
a1=0.8*a;
a2=2*a;
figure
subplot(121);imshow(a1);
title('暗图');
subplot(122);
imshow(a2);
title('亮图')
q3=rgb2gray(a1);q4=rgb2gray(a2);
figure
subplot(121);mhist(q3);title('暗图直方图')
subplot(122);
imhist(q4);
title('亮图直方图')
十一,图像处理雾化处理
q=imread('1.jpg');
m=size(q,1);n=size(q,2);
r=q(:
:
1);g=q(:
:
2);b=q(:
:
3);
fori=2:
m-10
forj=2:
n-10
k=rand
(1)*10;%产生一个随机数作为半径
di=i+round(mod(k,33));%得到随机横坐标
dj=j+round(mod(k,33));%得到随机纵坐标
r(i,j)=r(di,dj);%将原像素点用随机像素点代替
g(i,j)=g(di,dj);
b(i,j)=b(di,dj);
end
end
a(:
:
1)=r;a(:
:
2)=g;a(:
:
3)=b;
imshow(a)
title('雾化处理图');
q=rgb2gray(a);
figure
imhist(q);
title('雾化处理图直方图');
十二,图像处理高斯滤波
I=imread('1.jpg');
G=fspecial('gaussian',[55],2);
%fspecial生成一个高斯滤波器
Ig=imfilter(I,G,'same');
%imfilter使用该滤波器处理图片
imshow(Ig);
title('高斯滤波');
I1=rgb2gray(Ig);
figure
imhist(I1);
title('高斯滤波直方图');
十三,图像处理色彩平衡(来自网络)
im=imread('1.jpg');
im2=im;%存储元图像
im1=rgb2ycbcr(im);
%将imRGB图像转换为YCbCr空间。
YCbCr空间Y亮度信息。
Cb是蓝色分量和一个参考值得差
%Cr是红色分量和一个参考值得差。
?
%im1是一个M*N*3的矩阵。
Lu=im1(:
:
1);%获取亮度分量?
是一个M*N矩阵
Cb=im1(:
:
2);%获取蓝色偏差量?
Cb是一个M*N的矩阵
Cr=im1(:
:
3);%获取红色偏差量?
Cr是一个M*N的矩阵
[xyz]=size(im);%获得im的size将值赋给x=My=Nz=3.
tst=zeros(x,y);%建立一个M*N的0矩阵tst
Mb=sum(sum(Cb));
%sum(Cb)将每一列相加得到一个N维行向量。
sum(sum(Cb))将行向量元素相加。
得到一个数Mb
Mr=sum(sum(Cr));%同理得到Mr
Mb=Mb/(x*y);
Mr=Mr/(x*y);%Mb,Mr分别除以x*y.得到蓝色和红色的均值。
Db=sum(sum(Cb-Mb))/(x*y);
Dr=sum(sum(Cr-Mr))/(x*y);%得到b,r的方差
cnt=1;
fori=1:
x
forj=1:
y
b1=Cb(i,j)-(Mb+Db*sign(Mb));
b2=Cr(i,j)-(1.5*Mr+Dr*sign(Mr));
if(b1<(1.5*Db)&b2<(1.5*Dr));
Ciny(cnt)=Lu(i,j);%获得一个列向量Ciny维度为cnt-1
tst(i,j)=Lu(i,j);
cnt=cnt+1;
end
end
end
cnt=cnt-1;
iy=sort(Ciny,'descend');%将列向量Ciny元素降序排列
nn=round(cnt/10);
Ciny2(1:
nn)=iy(1:
nn);%将iy的1到nn个元素复制给Ciny2
mn=min(Ciny2);
c=0;
fori=1:
x
forj=1:
y
iftst(i,j)tst(i,j)=0;
else
tst(i,j)=1;
c=c+1;
end
end
end
R=im(:
:
1);
G=im(:
:
2);
B=im(:
:
3);
R=double(R).*tst;%将R元素与tst元素对应相乘
G=double(G).*tst;
B=double(B).*tst;
Rav=mean(mean(R));%求均值先列后行
Gav=mean(mean(G));
Bav=mean(mean(B));
Ymax=double(max(max(Lu)))/15;
Rgain=Ymax/Rav;
Ggain=Ymax/Gav;
Bgain=Ymax/Bav;
im(:
:
1)=im(:
:
1)*Rgain;
im(:
:
2)=im(:
:
2)*Ggain;
im(:
:
3)=im(:
:
3)*Bgain;
W=im;
figure,imshow(im2,[]),title('原始图像');
figure,imshow(im,[]),title('色彩平衡处理后的图像');
im1=rgb2gray(im);
%subplot(326);
figure
imhist(im1);
title('色彩平衡处理后直方图');
十四,图像处理明暗反转(网络)
f=imread('1.jpg');
%f=rgb2gray(f);
g1=imadjust(f,[01],[10]);
g2=imadjust(f,[0.50.75],[01]);
imshow(g2);
title('明暗反转');
figure
g=rgb2gray(g2);
imhist(g);
title('明暗反转直方图');
十五,图像处理反转负冲效果(负片图片)
f=imread('1.jpg');
g=imcomplement(f);%IPT函数imcomplement
imshow(g);
title('负片图片');
g1=rgb2gray(g);
figure
imhist(g1);
title('负片图片直方图');
%明暗反转功能让这种获得明暗反转图像的过程可用于增强潜入在大片黑色区域中的白色或灰色细节
十六,图像处理直方图均衡化
a=imread('1.jpg');
b=rgb2gray(a);
imshow(b);
c=histeq(b);%直方图均衡化
imshow(c);
title('直方图均衡化');
figure
imhist(c);
title('直方图均衡化直方图');
十七,图像处理椒盐噪声
M=imread('1.jpg');
P2=imnoise(M,'salt&pepper',0.02);%加入椒盐噪声
imshow(P2);
title('椒盐噪声');
qq=rgb2gray(P2);
figure
imhist(qq);
title('椒盐噪声直方图');
十八,图像处理高斯噪声
M=imread('1.jpg');
P1=imnoise(M,'gaussian',0.02);%加入高斯噪声
imshow(P1);
title('高斯噪声');
qq=rgb2gray(P1);
figure
imhist(qq);
title('高斯噪声直方图');
十九,图像处理类一
二十,图像处理类一
二十一,图像处理类一
二十二,图像处理类一
二十三,图像处理类一
二十四,图像处理类一
二十五,图像处理类一
五,
六、心得体会
这次实验有很多效果都没做出来,木刻效果没有找到代码也没头绪,剪纸效果做了很久做不出来,只知道要先变成灰度图,调整对比度,只显示黑白两色,去掉黑色,变成只有红白色的图片就回具有剪纸效果。
很多知识都想不起来代码,过程忘了,尤其是转换色彩空间做冰冻连环画效果,做了很久,也XX了很久,找不到转换。
这次实验最大认知就是知道的Matlab有多么的高大上,可以做动漫,可以做PS里的几乎所有功能,比PS更加细致化,数字化,对图像处理的特效,可以随心所欲的做处理。
可惜时间不多,也没有做出更多的效果,深表遗憾,对知识的掌握不熟练,书上得来终觉浅,课下会更多的实践,去了解,去学习,去实践,去对Matlab做更深入的学习。
七、程序资料清单和源代码
均来自XX百科