数字图像处理(一) matlab图像简单操作
来源:互联网 发布:拼人脸五官的软件 编辑:程序博客网 时间:2024/06/05 06:50
环境:matlab
之前一直在做一些枯燥的函数计算,没想到Matlab可以做图像处理,发现这个东西界面是用java写的,当你没配置matlab的jre环境时,看到一大堆swing的报错了没?用的是Matlab2007。
事实上计算机只是0和1的东西,所以一幅数字图像说到底就是0和1组成,先从灰度图像说起,:元素取值代表灰度级的矩阵。采用不同数据类型时取值范围:有uint8(8位数字图像数据类型),说回0和1,二进制,2的8次方,总共256种可能性,灰度级为[0, 255], 0是黑,255是白,虽然是“黑白图”,但是看上去有层次感,二值图像:元素取值为0或1的逻辑矩阵,这个才是真正的黑白,非黑即白,看到这里大家应该知道彩色图像,经常设置RGB。当然彩色的麻烦很多。
实验证明google比较强。当时想下载一个新的matlab,几G,回头还是找别的解决办法,发现环境变量的MATLAB_JAVA配置的jre是1.7版本,灵光一闪改成自己的IDE里面自带的JRE。
找到自己eclipse的jdk安装路径,是有自带的,像myeclipse的有D:\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013,把这个配置好,图像正常显示,昨晚就郁闷了,图片剪切不了。
和linux类似,whosiam有这种指令,上述的图像数据类型为uint8的灰度图像,如果把它变成二值图像,利用
之前一直在做一些枯燥的函数计算,没想到Matlab可以做图像处理,发现这个东西界面是用java写的,当你没配置matlab的jre环境时,看到一大堆swing的报错了没?用的是Matlab2007。
事实上计算机只是0和1的东西,所以一幅数字图像说到底就是0和1组成,先从灰度图像说起,:元素取值代表灰度级的矩阵。采用不同数据类型时取值范围:有uint8(8位数字图像数据类型),说回0和1,二进制,2的8次方,总共256种可能性,灰度级为[0, 255], 0是黑,255是白,虽然是“黑白图”,但是看上去有层次感,二值图像:元素取值为0或1的逻辑矩阵,这个才是真正的黑白,非黑即白,看到这里大家应该知道彩色图像,经常设置RGB。当然彩色的麻烦很多。
当然,位数越多,可能性就越多种,那么层次感就很强烈了。
f=imread('lina.jpg'); <span style="font-size:18px;"></span>
读入图像,matlab里面不加分号是代表执行语句不输出结果,加了分号自己用过
a=2;
一试不就知道了?
想看这幅图像由哪些数字组成,把第一条语句的分号去掉。
imshow(f)
展示出这幅图片,出了大问题:
显示全白,报错:
java.lang.NullPointerExceptionat com.mathworks.jmi.bean.MatlabBeanInterface.addCallback(MatlabBeanInterface.java:680)at com.mathworks.jmi.bean.MatlabCallbackInterface.addCallback(MatlabCallbackInterface.java:128)
实验证明google比较强。当时想下载一个新的matlab,几G,回头还是找别的解决办法,发现环境变量的MATLAB_JAVA配置的jre是1.7版本,灵光一闪改成自己的IDE里面自带的JRE。
找到自己eclipse的jdk安装路径,是有自带的,像myeclipse的有D:\MyEclipse\Common\binary\com.sun.java.jdk.win32.x86_1.6.0.013,把这个配置好,图像正常显示,昨晚就郁闷了,图片剪切不了。
>> whos f Name Size Bytes Class Attributes f 362x550 199100 uint8
和linux类似,whosiam有这种指令,上述的图像数据类型为uint8的灰度图像,如果把它变成二值图像,利用
>> g = im2uint8(f);>> imshow(g)便成了一幅黑白图像。
图像翻转:
fp = f(end:-1:1, :);对矩阵的处理有一个精彩的回答,引自http://zhidao.baidu.com/question/333655937.html
一个矩阵括号里逗号用于间隔不同维度
比如A为一维向量,A(1)就表示第一个元素
如果A为二维矩阵,那么需要A(m,n)表示第m行,第n列矩阵,若是有冒号,比如A(:,n)就表示那些列数为n,行数为任意的所有制,即去矩阵第n列,相应A(m,:)表示去A的第m行所有元素
再来看A(end:-1:1,:),同样逗号前表示行,后表示列,列的部分为冒号,表示列数任意,也就是对A整行整行进行操作;逗号前,end表示最后一行,1表示第1行,-1表示从后到前倒着取出A的整列(这里错了,应该为整行),一般情况下我们顺序来使用,比如A(2:1:end,:)表示从A第二行取到最后一行,1表示取行时的间隔,若A(2:2:end,:),表示每两行取一行,就是2 4 6行下去到end。
同样的道理,截取图像也是一样:
>> part = f(122:322,122:322);>> imshow(part);从122行到322行,122列到322列。
最简单的东西,改一下图像的数字,你能把它变成黑一块白一块,接下来,还会介绍位图的东西,图像是一层一层的,其中有一层是对原图影响最小的,然后,你就可以把你的情书嵌入到你女朋友或者男朋友的照片里。就是水印吧。
接下来会用自己学的东西,本来想用java做个界面,结合这个,进行图片的嵌入和解析。发现两者的结合很麻烦,报了一大堆的错。
- 数字图像处理(一) matlab图像简单操作
- MATLAB数字图像处理(一)图像的基本操作
- MATLAB数字图像处理(一)图像直方图
- MATLAB数字图像处理(一)
- matlab+数字图像处理教程之1-图像的基本操作
- 【图像处理】数字图像处理软件(一)
- 数字图像处理matlab基础操作
- Matlab数字图像处理基础:图像采样
- 【Matlab数字图像处理】第五章:图像复原
- Matlab数字图像处理之图像运算
- 图像处理入门<1>——matlab数字图像处理基本操作
- 【Matlab数字图像处理】(一)时域处理
- 使用 matlab 数字图像处理(一)—— 归一化直方图
- MATLAB数字图像处理(一)直方图均衡化
- MATLAB数字图像处理(一)局部直方图均衡化
- python数字图像处理(10):图像简单滤波
- python数字图像处理(10):图像简单滤波
- python数字图像处理(10):图像简单滤波
- hdu3980 Paint Chain
- C/C++ 程序设计员应聘常见面试试题
- 2013 ACM/ICPC Asia Regional Changchun Online (2013网络赛)
- 因此我们并不知道“小道消息”的微信账号到底有多少追随
- linux sar 命令详解
- 数字图像处理(一) matlab图像简单操作
- Fix for "convert: no decode delegate for this image format"
- A Funny Game
- Java工具类之StringBuffer
- CSU Monthly 2013 Oct.
- linuxr下sar调优工具的深入分析
- 【leetcode】Letter Combinations of a Phone Number
- HashMap与Hashtable的区别
- 游标使用,Oracle数据库按属性编辑成绩