首页 > 代码库 > matlab 作业代码
matlab 作业代码
A=imread(‘e:\1\1.tif‘);%读入图片“1.tif”B=rgb2gray(A);%将图像转换成灰度图像subplot(121);imshow(A);%显示原图像title(‘原图像‘);%命名subplot(122)imshow(B);%显示转换后的灰度图像title(‘转化后的灰度图像‘);C=imhist(B);%灰度图像直方图figure(2),imhist(B);%显示title(‘灰度图像的直方图‘);figure(3),imhist(B);title(‘曲线拟合‘);hold on;[y,x]=imhist(B);po=polyfit(x,y,6);plot(x,y,‘r‘);me=mean(C);%直方图均值va=var(C);%直方图方差st=std(C);%直方图标准差disp([‘均值=‘,num2str(me)]);disp([‘方差=‘,num2str(va)]);disp([‘标准差=‘,num2str(st)]);%求直方图波峰值(一副图像中同一种灰度值出现最多的位置点)[Y X]=imhist(B);%提取直方图的纵坐标Y、横坐标Xp=max(Y);%找到峰值gray_value=find(Y==p);%得到相应的横坐标,即灰度值[N,M]=find(B==gray_value);%在图像中找到等于该灰度值的点的坐标figure(4):imshow(B);%显示原图hold on;plot(M,N,‘r*‘);%在原图上画出种子点title(‘同一灰度出现最多位置点分布图‘);D=histeq(B);%直方图均衡化figure(5):imshow(D);%显示title(‘直方图均衡化后的图像‘);figure(6),imhist(D);%显示均衡化后的直方图title(‘均衡化后的灰度图像直方图‘);figure(10);mesh(B);%加入椒盐噪声Bn=imnoise(B,‘salt & pepper‘,0.02);Bn2=im2double(Bn);figure(7),subplot(231);imshow(Bn);title(‘加入椒盐噪声‘);%中值滤波I=medfilt2(Bn);subplot(232);imshow(I);title(‘中值滤波去噪‘);%均值滤波I1=fspecial(‘average‘,[5 5]);J1=filter2(I1,Bn2);subplot(233);imshow(J1);title(‘均值滤波去噪‘);%高斯滤波I2=fspecial(‘gaussian‘,[5 5]);J2=filter2(I2,Bn2);subplot(234);imshow(J2);title(‘高斯滤波去噪‘);%sobel滤波I3=fspecial(‘sobel‘);J3=filter2(I3,Bn2);subplot(235);imshow(J3);title(‘sobel滤波去噪‘);%拉普拉丝滤波I4=fspecial(‘laplacian‘,0.5);J4=filter2(I4,Bn2);subplot(236);imshow(J4);title(‘拉普拉斯滤波去噪‘);%sobel、robert、prewitt、log和canny算子检测图像边缘BW1=edge(B,‘sobel‘);BW2=edge(B,‘roberts‘);BW3=edge(B,‘prewitt‘);BW4=edge(B,‘log‘);BW5=edge(B,‘canny‘);figure,subplot(2,3,1);imshow(B);title(‘原图像‘);subplot(2,3,2);imshow(BW1);title(‘sobel算子提取‘);subplot(2,3,3);imshow(BW2);title(‘roberts算子提取‘);subplot(2,3,4);imshow(BW3);title(‘prewitt算子提取‘);subplot(2,3,5);imshow(BW4);title(‘log算子提取‘);subplot(2,3,6);imshow(BW5);title(‘canny算子提取‘); %直方图均衡化 [height,width] = size(T); %进行像素灰度统计; s = zeros(1,256);%统计各灰度数目,共256个灰度级 for i = 1:height for j = 1: width s(T(i,j) + 1) = s(T(i,j) + 1) + 1;%对应灰度值像素点数量增加一 end end %计算灰度分布密度 p = zeros(1,256); for i = 1:256 p(i) = s(i) / (height * width * 1.0); end %计算累计直方图分布 c = zeros(1,256); c(1) = p(1); for i = 2:256 c(i) = c(i - 1) + p(i); end %累计分布取整,将其数值归一化为1~256 c = uint8(255 .* c + 0.5); %对图像进行均衡化 for i = 1:height for j = 1: width T(i,j) = c(T(i,j)+1); end end imshow(T)%显示均衡化后的图像
A=imread(‘e:\1\1.tif‘);%读入图片“1.tif”
B=rgb2gray(A);%将图像转换成灰度图像
subplot(121);
imshow(A);%显示原图像
title(‘原图像‘);%命名
subplot(122)
imshow(B);%显示转换后的灰度图像
title(‘转化后的灰度图像‘);
C=imhist(B);%灰度图像直方图
figure(2),imhist(B);%显示
title(‘灰度图像的直方图‘);
figure(3),imhist(B);
title(‘曲线拟合‘);
hold on;
[y,x]=imhist(B);
po=polyfit(x,y,6);
plot(x,y,‘r‘);
me=mean(C);%直方图均值
va=var(C);%直方图方差
st=std(C);%直方图标准差
disp([‘均值=‘,num2str(me)]);
disp([‘方差=‘,num2str(va)]);
disp([‘标准差=‘,num2str(st)]);
%求直方图波峰值(一副图像中同一种灰度值出现最多的位置点)
[Y X]=imhist(B);%提取直方图的纵坐标Y、横坐标X
p=max(Y);%找到峰值
gray_value=http://www.mamicode.com/find(Y==p);%得到相应的横坐标,即灰度值
[N,M]=find(B==gray_value);%在图像中找到等于该灰度值的点的坐标
figure(4):imshow(B);%显示原图
hold on;
plot(M,N,‘r*‘);%在原图上画出种子点
title(‘同一灰度出现最多位置点分布图‘);
D=histeq(B);%直方图均衡化
figure(5):imshow(D);%显示
title(‘直方图均衡化后的图像‘);
figure(6),imhist(D);%显示均衡化后的直方图
title(‘均衡化后的灰度图像直方图‘);
figure(10);mesh(B);
%加入椒盐噪声
Bn=imnoise(B,‘salt & pepper‘,0.02);
Bn2=im2double(Bn);
figure(7),subplot(231);
imshow(Bn);
title(‘加入椒盐噪声‘);
%中值滤波
I=medfilt2(Bn);
subplot(232);
imshow(I);
title(‘中值滤波去噪‘);
%均值滤波
I1=fspecial(‘average‘,[5 5]);
J1=filter2(I1,Bn2);
subplot(233);
imshow(J1);
title(‘均值滤波去噪‘);
%高斯滤波
I2=fspecial(‘gaussian‘,[5 5]);
J2=filter2(I2,Bn2);
subplot(234);
imshow(J2);
title(‘高斯滤波去噪‘);
%sobel滤波
I3=fspecial(‘sobel‘);
J3=filter2(I3,Bn2);
subplot(235);
imshow(J3);
title(‘sobel滤波去噪‘);
%拉普拉丝滤波
I4=fspecial(‘laplacian‘,0.5);
J4=filter2(I4,Bn2);
subplot(236);
imshow(J4);
title(‘拉普拉斯滤波去噪‘);
%sobel、robert、prewitt、log和canny算子检测图像边缘
BW1=edge(B,‘sobel‘);
BW2=edge(B,‘roberts‘);
BW3=edge(B,‘prewitt‘);
BW4=edge(B,‘log‘);
BW5=edge(B,‘canny‘);
figure,subplot(2,3,1);
imshow(B);
title(‘原图像‘);
subplot(2,3,2);
imshow(BW1);
title(‘sobel算子提取‘);
subplot(2,3,3);
imshow(BW2);
title(‘roberts算子提取‘);
subplot(2,3,4);
imshow(BW3);
title(‘prewitt算子提取‘);
subplot(2,3,5);
imshow(BW4);
title(‘log算子提取‘);
subplot(2,3,6);
imshow(BW5);
title(‘canny算子提取‘);
%直方图均衡化
[height,width] = size(T);
%进行像素灰度统计;
s = zeros(1,256);%统计各灰度数目,共256个灰度级
for i = 1:height
for j = 1: width
s(T(i,j) + 1) = s(T(i,j) + 1) + 1;%对应灰度值像素点数量增加一
end
end
%计算灰度分布密度
p = zeros(1,256);
for i = 1:256
p(i) = s(i) / (height * width * 1.0);
end
%计算累计直方图分布
c = zeros(1,256);
c(1) = p(1);
for i = 2:256
c(i) = c(i - 1) + p(i);
end
%累计分布取整,将其数值归一化为1~256
c = uint8(255 .* c + 0.5);
%对图像进行均衡化
for i = 1:height
for j = 1: width
T(i,j) = c(T(i,j)+1);
end
end
imshow(T)%显示均衡化后的图像
matlab 作业代码