码迷,mamicode.com
首页 > 其他好文 > 详细

matlab 作业代码

时间:2014-12-03 20:49:46      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:style   blog   ar   color   os   sp   for   on   div   

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=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=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 作业代码

标签:style   blog   ar   color   os   sp   for   on   div   

原文地址:http://www.cnblogs.com/Qianqian-Dong/p/4141007.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!