程序复习过程Word格式.docx
- 文档编号:18773862
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:40
- 大小:1.18MB
程序复习过程Word格式.docx
《程序复习过程Word格式.docx》由会员分享,可在线阅读,更多相关《程序复习过程Word格式.docx(40页珍藏版)》请在冰豆网上搜索。
水平方向'
0.9,'
subplot(133),imshow(gv),title('
%LOG
subplot(131),imshow(i),title('
原图'
log'
0.005,2.25);
subplot(132),imshow(gv),title('
高斯拉普拉斯LOG'
0.1,2.25);
%2.25是代表标准差。
默认为2
%Canny边缘检测器
canny'
[0.040.1],1.5);
%[0.040.1]是两个阈值,1.5是平面滤波的标准差,默认值为1
Canny边缘检测器'
(四)用迭代法和OSTU法对rice进行自动单阈值分割;
x=imread('
Lena.bmp'
%figure;
%imshow(x);
[m,n]=size(x);
N=m*n;
num=zeros(1,256);
p=zeros(1,256);
num(x(i,j)+1)=num(x(i,j)+1)+1;
end
fori=0:
255;
p(i+1)=num(i+1)/N;
totalmean=0;
fori=0:
totalmean=totalmean+i*p(i+1);
maxvar=0;
fork=0:
255kk=k+1;
zerosth=sum(p(1:
kk));
firsth=0;
forh=0:
k
firsth=firsth+h*p(h+1);
var=totalmean*zerosth-firsth;
var=var*var;
var=var/(zerosth*(1-zerosth)+0.01);
var=sqrt(var);
if(var>
maxvar)
maxvar=var;
point=k;
threshold=point;
%I=rgb2gray(I);
I=double(I);
T=double(min(I(:
))+max(I(:
)))/2;
done=false;
i=0;
while~done
r1=find(I<
=T);
r2=find(I>
T);
Tnew=(mean(I(r1))+mean(I(r2)))/2;
done=abs(Tnew-T)<
1;
T=Tnew;
i=i+1;
I(r1)=0;
I(r2)=1;
disp('
迭代法求得的阈值'
)
disp(T)
imshow(I),title('
迭代法'
(三)利用直方图人工指定阈值对rice进行自动单阈值分割;
I1=imread('
subplot(131);
imshow(I1);
title('
I=im2bw(I1);
subplot(132);
imhist(I1);
直方图'
[mn]=size(I1);
if(I1(i,j)>
I1(i,j)=255;
%大于75,都变成背景色
I1(i,j)=0;
subplot(133);
分割以后图'
滤波器
调入给定的数字图像,并进行计算机均衡化处理,显示原图像的直方图和经过均衡化处理过的图像直方图。
观察均衡化后图像和直方图的变化。
结果如图。
I1=imread('
flower.jpg'
subplot(4,3,1),imshow(I1);
%显示原图
I=rgb2gray(I1);
subplot(4,3,2),imshow(I);
%将彩色图转化为灰度图
subplot(4,3,3),imhist(I,50);
%每隔50隔像素点统计一次
h=histeq(I);
%均衡化,,画图片的直方图
subplot(4,3,4),imshow(h);
subplot(4,3,5),imhist(h);
%显示均衡化以后的图像
(二)对图像加噪后分别使用MATLAB自带函数和自写函数进行平滑滤波,观察实验结果。
%2平滑滤波%自带函数
i=imnoise(I,'
salt'
%加盐噪
subplot(2,2,1),imshow(i);
h=fspecial('
average'
%3*3的邻域平均模板,生成均值滤波器
y=imfilter(i,h);
%对图像进行滤波
subplot(2,2,2),imshow(y);
%2平滑滤波%自写函数
Inew=myMidalp(i,3);
%调用函数
subplot(2,2,3),imshow(Inew)
(三)自写函数实现对图像的锐化操作。
运用拉普拉斯算子梯度增强法进行图像锐化
[I,map]=imread('
Subplot(1,2,1)imshow(I,map);
%map:
映射
[Gx,Gy]=gradient(I);
%计算梯度
G=sqrt(Gx.*Gx+Gy.*Gy);
%注意是矩阵点乘
J=I;
K=find(G<
=7);
%查找非零元素
J(K)=25;
Q=find(G>
J(Q)=255;
Subplot(1,2,2),imshow(J,map);
(4)分别使用最大值、最小值和中值滤波器对图像进行处理,观察实验结果。
最大值:
%最大值滤波器
I2=imread('
I1=rgb2gray(I2);
n=2;
c=2;
mask=ones(n,n);
[r1,c1]=size(I1);
subplot(2,2,1);
imshow(I2);
原始图像'
subplot(2,2,2);
灰度图像'
I1=double(I1);
I1_max=I1;
mid=floor(n/2);
foru=1:
r1-n+1
forv=1:
c1-n+1
A=I1(u:
u+n-1,v:
v+n-1);
A=A.*mask;
I1_max(u+mid,v+mid)=max(max(A));
subplot(2,2,3);
imshow(I1_max(mid+1:
r1-mid,mid+1:
c1-mid),[]);
最大值图像'
最小值:
%最小值滤波器
I1_min=I1;
%floor:
向下取整
I1_min(u+mid,v+mid)=min(min(A));
imshow(I1_min(mid+1:
最小值图像'
中值:
noise=imnoise(I,'
figure,imshow(noise);
Inew=myMidal(noise,3);
figure,imshow(Inew);
(五)分别使用理想和巴特沃斯高低通滤波器对图像进行滤波(高斯噪声),讨论阈值的设定和阶数的选取。
clc;
%读图
F=fft2(I);
%傅里叶变换,变为频域内的图
newF=fftshift(F);
%移频
[MN]=size(I);
%获取图像的大小
d0=100;
%M=60;
N=60;
c1=floor(M/2);
%原点
c2=floor(N/2);
h1=zeros(M,N);
%理想型
%h2=zeros(M,N);
%巴特沃斯型
%h3=zeros(M,N);
%高斯型
%sigma=4;
%n=4;
%巴特沃斯阶数
M
N
d=sqrt((i-c1)^2+(j-c2)^2);
ifd<
=d0
h1(i,j)=1;
%若为低通,则为0
h1(i,j)=0;
%若为低通,则为1
%h2(i,j)=1/(1+(d/d0)^(2*n));
%h3(i,j)=exp(-d^2/(2*sigma^2));
A=h1.*newF;
%相当于Guv
B=ifft2(A);
%相当于Gxy
imshow(log(abs(B)),[]);
draw2(h1,'
理想型'
%draw2(h2,'
巴特沃斯'
%draw2(h3,'
高斯'
图像灰度变换
一些常用灰度变换Matlab程序以及图像处理效果图
1,二值化和阈值处理
%图像二值化(选取一个域值,(5)将图像变为黑白图像)
C:
\DocumentsandSettings\Administrator\桌面\DIP-E1增强\DIP-E1增强\p12.tif'
bw=im2bw(I,0.5);
%选取阈值为0.5
subplot(1,3,1);
subplot(1,3,2);
imshow(bw);
显示二值图像'
J=find(I<
150);
I(J)=0;
J=find(I>
=150);
I(J)=255;
subplot(1,3,3);
图像二值化(域值为150)'
2非线性变换
%对数变换
I=mat2gray(I);
%对数变换不支持uint8类型数据,将一个矩阵转化为灰度图像的数据格式(double)
J=log(I+1);
subplot(1,2,1);
Imshow(I);
%显示图像
subplot(1,2,2);
Imshow(J);
对数变换后的图像'
3,反色变换
figure,imshow(I);
I2=imcomplement(I1);
figure,imshow(I2);
反色后图像'
4.灰度图像均衡化
J=histeq(I);
subplot(1,2,1),imshow(I);
subplot(1,2,2),imshow(J);
figure,subplot(1,2,1),imhist(I,64);
subplot(1,2,2),imhist(J,64);
点检测
myMidal.m
function[d]=myMidal(x,n)
%x是给定的图像,n是滤波器的大小;
本函数实现中值滤波
[heigthwidth]=size(x);
x1=double(x);
x2=x1;
%x2就是原图像,模板每滑动一次,就用加权平均值修改
width-n+1
heigth-n+1
c=x1(i:
i+n-1,j:
j+n-1);
%矩阵n行*n列模板,i:
i+n-1是n行,c就是模板划过的区域
mm=-sum(sum(c))+9*c(1+(n-1)/2,1+(n-1)/2);
%第一次求和,是按列求和。
得到一个行向量,,向量的基础上都求和sum,在i行j列中取中间值的坐标是i+(n-1)/2,j+(n-1)/2
%e=reshape(c,1,n*n);
%将c变成向量
%mm=median(e);
%取中间值
x2(i+(n-1)/2,j+(n-1)/2)=mm;
%模板中间坐标,i+(n-1)/2表示行号,j+(n-1)/2是列号
x3=x2(2:
height-1,2:
width-1);
%去掉最外面的一行一列
figure,imshow(uint8(x3));
%double是用来计算的,,uint是用来直接显示的
%T=max(max(abs(x3)));
%最大梯度的矩阵,每一列求出一个最大值,得到一个行矩阵,再求一次最大值
T=20;
[mn]=size(x3);
%比max小的都是0
if((abs(i,j))<
T)x3(i,j)=255;
x3(i,j)=0;
d=uint8(x3);
%二值图的梯度图
myMidalfiler.m
flower,jpg'
[mn]=size(I);
%I=I(10:
m-10,10:
n-10);
%截取从第10行,到m-10行
%I(60,70)=0%在60行70列加一个黑点,直接赋值为0
%imwrite(I,'
newI=myMidal(I,3);
figure,imshow(newI);
阈值
Sobel
%I是输入图像,Sobel是运用的方法,parameters是参数
%g是一个数组,t是edge用于确定参数,T是阈值,dir(vertical)是检测的首选方向
高斯拉普拉斯LOG'
%2.25是代表标准差。
%Canny
%[0.040.1]是两个阈值,1.5是平面滤波的标准差,默认值为1
边缘检测器'
%(三)利用直方图人工指定阈值对rice进行自动单阈值分割;
%大于75,都变成背景色
%(四)用迭代法和OSTU法对rice进行自动单阈值分割;
图像增强
(1)调入给定的数字图像,并进行计算机均衡化处理,显示原图像的直方图和经过均衡化处理过的图像直方图。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 复习 过程