MATLAB一些简单的图像处理程序
来源:互联网 发布:天津大学软件工程学院 编辑:程序博客网 时间:2024/06/05 05:13
1
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); endendfigure,imshow(uint8(Inew))
2
clcclear x=0:255;y1=x;figure,plot(x,y1,'r')hold ony2=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 endendfigure,imshow(Inew,[])4
clearclcI=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; endendfigure,imshow(I,[])figure,imshow(Inew,[])5
每个像素点的计算与查找表的比较
clearclcI=imread('moon.tif');I=im2double(I);[m,n]=size(I);%循环实现ticfor i=1:m for j=1:n Inew(i,j)=255*log(I(i,j)+1)/log(256); endendtoc%查找表ticx=0:255;c=255/log(256);y=c*log(x+1);I_log=uint8(y(x+1));figure,plot(x,y)tocfigure,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 endendfigure,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; endendfigure,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; endendfigure,bar(h)p=h/(m*n);sum=0;for i=1:256 sum=sum+p(i); y(i)=round(sum*255);endfor i=1:m for j=1:n Inew(i,j)=y(I(i,j)+1); endendfigure,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); endendfigure,imshow(uint8(Inew))
0 0
- MATLAB一些简单的图像处理程序
- 常用的一些图像处理Matlab源代码
- 常用的一些图像处理Matlab源代码
- 常用的一些图像处理Matlab源代码
- 常用的一些图像处理Matlab源代码
- 基于MATLAB的图像处理程序
- 基于MATLAB的图像处理程序(…
- 一个简单的图像处理的程序
- 简单的Java图像处理程序
- 关于matlab做图像处理的一些小tips
- matlab图像处理一些小知识
- MATLAB 图像处理一些实用函数整理
- [openCV]视频的读入与一些简单的图像处理
- matlab中图像的处理
- MATLAB图像的基本处理
- 【matlab 图像处理】MATLAB中图像处理的函数
- opencv图像处理的一些常用函数简单使用
- 图像的简单处理
- 使用log4j配置不同文件输出不同内容
- 千里码:热点营销-1
- 调试项目出错------360云盘同步搞的鬼
- arcgis for android之加载移动地图包
- 打印九九乘法表
- MATLAB一些简单的图像处理程序
- Math.ceil(a/b)结果出错--原因是a和b不是double
- resin4的初次配置与使用
- Shader学习笔记(五)纹理映射与viewDir
- oracle表数据类型number对应java中BIgDecimal转int
- oracle数据库字符集US7ASCII,在java中处理中文问题
- 创建pjsip module 的python 版本时遇到的错误: error: ld returned 1 exit status error: ommand 'x86_64-linux-g
- oracle分页
- Qt之实现录音播放及raw(pcm)转wav格式