MATLAB一些简单的图像处理程序
2016-10-10 18:18
357 查看
1
2
每个像素点的计算与查找表的比较
6
显示一幅图像的直方图
将一幅图经直方图均衡化处理
7 邻域处理
I=imread('pout.tif'); figure,imshow(I); [m,n]=size(I); Inew=zeros(floor(m/2),n); for i=1:m for j=1:n Inew(i,j)=I(2*i-1,j); end end figure,imshow(uint8(Inew))
2
clc clear x=0:255; y1=x; figure, plot(x,y1,'r') hold on y2=255:-1:0; plot(x,y2,'b') ylog=255*(log(x+1)/log(256)); plot(x,ylog,'g+') yexp=255*x.^3/255^3; plot(x,yexp,'y+') c=255/255^3; ynthroot=nthroot((x/c),3); plot(x,ynthroot,'yo')3
I=imread('moon.tif'); I=double(I); [m,n]=size(I); for i=1:m for j=1:n if I(i,j)<100 Inew(i,j)=3*I(i,j); elseif I(i,j)>200 Inew(i,j)=0.8*I(i,j); else Inew(i,j)=I(i,j); end end end figure,imshow(Inew,[])4
clear clc I=imread('moon.tif'); I=im2double(I); [m,n]=size(I); for i=1:m for j=1:n Inew(i,j)=I(i,j)^0.2; end end figure,imshow(I,[]) figure,imshow(Inew,[])5
每个像素点的计算与查找表的比较
clear clc I=imread('moon.tif'); I=im2double(I); [m,n]=size(I); %循环实现 tic for i=1:m for j=1:n Inew(i,j)=255*log(I(i,j)+1)/log(256); end end toc %查找表 tic x=0:255; c=255/log(256); y=c*log(x+1); I_log=uint8(y(x+1)); figure,plot(x,y) toc figure,imshow(I_log,[]) figure,imshow(I,[]) figure,imshow(Inew,[])
6
显示一幅图像的直方图
I=imread('pout.tif'); figure,imshow(I) [m,n]=size(I); h=zeros(1,256); for k=0:255 for i=1:m for j=1:n if(I(i,j)==k) h(k+1)=h(k+1)+1; end end end end figure,bar(h)改进后代码:
I=imread('pout.tif'); figure,imshow(I) [m,n]=size(I); h=zeros(1,256); for i=1:m for j=1:n h(I(i,j)+1)=h(I(i,j)+1)+1; end end figure,bar(h)
将一幅图经直方图均衡化处理
I=imread('pout.tif'); figure,imshow(I) [m,n]=size(I); h=zeros(1,256); for i=1:m for j=1:n h(I(i,j)+1)=h(I(i,j)+1)+1; end end figure,bar(h)
p=h/(m*n);
sum=0;
for i=1:256
sum=sum+p(i);
y(i)=round(sum*255);
end
for i=1:m
for j=1:n
Inew(i,j)=y(I(i,j)+1);
end
end
figure,imshow(unit8(Inew))
7 邻域处理
I=imread('pout.tif'); I=double(I); %卷积模板的不同处理效果不同 %M=ones(3,3)/9;将一幅图模糊处理; M=[0 -1 0;-1 5 -1;0 -1 0];将一幅图锐化处理,改变中心位置的值有不同效果 %M=[1 1 1;0 0 0;-1 -1 -1];指出原始图像中水平边缘存在位置的图像;M=[1 0 -1;1 0 -1;1 0 -1];指出原始图像中垂直边缘存在位置的图像 M=ones(3,3)/9; [m,n]=size(I); Inew=zeros(m,n); %从2开始到m-1忽略边界 for i=2:m-1 for j=2:n-1 Inew(i,j)=I(i-1,j-1)*M(1,1)+I(i-1,j)*M(1,2)+... I(i-1,j+1)*M(1,3)+I(i,j-1)*M(2,1)+I(i,j)*M(2,2)+... I(i,j+1)*M(2,3)+I(i+1,j-1)*M(3,1)+I(i+1,j)*M(3,2)+... I(i+1,j+1)*M(3,3); end end figure,imshow(uint8(Inew))
相关文章推荐
- 简单的Java图像处理程序
- MATLAB GUI 打开/显示/处理 /保存/图象(图像)程序
- MATLAB 图像处理一些实用函数整理
- (初学树莓派香蕉派心得)利用opencv简单控制摄像头,做一些基本图像处理
- 小程序,一个简单的图像处理
- matlab图像处理一些小知识
- 关于matlab做图像处理的一些小tips
- [openCV]视频的读入与一些简单的图像处理
- opencv图像处理的一些常用函数简单使用
- Matlab中如何读出写入图像文件以及对图像的简单处理
- Matlab中如何读出写入图像文件以及对图像的简单处理
- matlab练习程序(图像滤波时的边界处理2)
- 安卓第十五天笔记-图形图像一些简单处理
- 简单的Java图像处理程序
- Matlab中如何读出写入图像文件以及对图像的简单处理
- 一个简单的图像处理的程序
- matlab对于文档的路径和文件夹的一些简单处理
- Matlab BMP图像如何能运行在处理RAW图像程序中
- matlab图像处理程序大集合
- 安卓第十五天笔记-图形图像一些简单处理