首页 > 代码库 > 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 作业代码