matlab笔记5 image
使用基于帕斯卡三角形的项创建一个对称矩阵:A = pascal(3)
randi 的第一个输入描述整数可能值的范围,后面两个输入描述行和列的数量。C = randi(10,3,2)
有一个专门的点积函数,称为 dot
。
非共轭复数转置(其中每个元素的复数部分保留其符号)表示为 z.'
eye(m,n)
返回 m×n 矩形单位矩阵,eye(n) 返回 n×n 单位方阵。
向量 x 的 p-范数,norm(x,p)
进行计算,此运算是为 p > 1 的任意值定义的,但最常见的 p 值为 1、2 和 ∞。默认值为 p = 2,
x = b/A
表示使用 mrdivide 获得的矩阵方程 xA = b 的解。x = A\b
表示使用 mldivide 获得的矩阵方程 Ax = b 的解。
(b/A)' = (A'\b')
.
m = n
方阵方程组。求精确解。
m > n
超定方程组,即方程个数多于未知数个数。求最小二乘解。
m < n
欠定方程组,即方程个数少于未知数个数。使用最多 m 个非零分量求基本解。
非奇异矩阵==可逆矩阵
eig
特征值和特征向量
提供的数据分析函数的列表,请键入help datafun
图像
要显示图像,请使用 imshow 函数:imshow(X,map)
使用 imread
函数可以读取标准图像文件(TIFF、JPEG、PNG 等)。imread 返回的数据类型取决于读取的图像类型。
使用 imwrite
函数可以将 MATLAB 数据写入到各种标准图像格式。
大多数图像表示为二维数组(矩阵),其中矩阵的每个元素对应所显示图像的一个像素。例如,由 200 行和 300 列不同颜色的点组成的图像保存为一个 200×300 的矩阵。有些图像,如 RGB,需要三维数组,其中三个维度的第一个平面表示红色像素强度,第二个平面表示绿色像素强度,第三个平面表示蓝色像素强度。
MATLAB 数学支持三种不同的数值类用于图像显示:
双精度浮点数(double)
16 位无符号整数(uint16)
8 位无符号整数(uint8)
imshow 显示图像
image 从数组显示图像
imagesc 显示使用经过标度映射的颜色的图像
imread 从图形文件读取图像
imresize 调整图像大小
imwrite 将图像写入图形文件
imfinfo 有关图形文件的信息
imformats 管理图像文件格式注册表
frame2im 返回与影片帧关联的图像数据
im2frame 将图像转换为影片帧
im2java 将图像转换 Java 图像
im2double 将图像转换为双精度值
ind2rgb 将索引图像转换为 RGB 图像
rgb2gray 将 RGB 图像或颜色图转换为灰度图
rgb2ind 将 RGB 图像转换为索引图像
imapprox 通过减少颜色数量来近似处理索引图像
dither 转换图像,通过抖动提高表观颜色分辨率
cmpermute 重新排列颜色图中的颜色
cmunique 消除颜色图中的重复颜色;将灰度或真彩色图像转换为索引图像
A = imread('ngc6543a.jpg');
索引图像由数据矩阵 X 和颜色图矩阵 map 组成。map 是一个 double 类的 m×3 数组,由 [0, 1] 范围内的浮点值组成。map 的每一行指定单一颜色的红、绿和蓝分量。索引图像使用像素值到颜色图值的“直接映射”。每个图像像素的颜色是以 X 中的对应值为索引求得的 map 中的值。因此 X 值必须是整数。值 1 指向 map 中第一行,值 2 指向第二行,以此类推。使用以下语句显示索引图像。image(X); colormap(map)
图像矩阵和颜色图中值的关系取决于图像矩阵的类。如果图像矩阵是 double 类,那么值 1 指向颜色图中的第一行,值 2 指向第二行,以此类推。如果图像矩阵是 uint8 或 uint16 类,那么有个偏移 - 值 0 指向颜色图中的第一行,值 1 指向第二行,以此类推。在图形文件格式中使用偏移是为了使可支持的颜色数目达到最大。在上面的图像中,图像矩阵是 double 类。
强度图像是一个数据矩阵 I,其中的值表示某一范围内的强度。强度图像表示为单个矩阵,矩阵的每个元素对应一个图像像素。
imagesc(A); colormap(gray)
imagesc(A,[min(A(:)) max(A(:))]); colormap(gray)
bit-depth:使用多少位来定义一个像素点。bit-depth越大,可以表示的色彩就越多。通常情况下,图像的像素值范围为0-255, 则其bit-depth就是8。RGB图像的bit-depth为24:8bit表示R,8bit表示G,8bit表示B。
RGB 图像,有时称为真彩色图像,以 m×n×3 数据数组形式存储,该数组定义了对应图像每个像素的红色、绿色和蓝色分量。
例如像素 (10,5) 的红色、绿色和蓝色分量分别存储在 RGB(10,5,1)、RGB(10,5,2) 和 RGB(10,5,3) 中。
您可以对 uint8 和 uint16 数组执行其他几种操作,包括:
使用 reshape、cat、permute 函数以及 [] 和 ‘ 运算符重构、重新排序和串联数组
使用 save 和 load 将 uint8 和 uint16 数组保存及加载到 MAT 文件。(请记住,如果要加载或保存图形格式文件图像,则必须使用 imread 和imwrite 命令代替。)
使用 find 定位 uint8 和 uint16 数组中非零元素的索引。但返回的数组始终为 double 类。
关系运算符
基于 NTSC 标准合并 RGB 值,以此方式来计算单色亮度,这会将与眼睛敏感度相关的系数应用到 RGB 颜色:
I = .2989*rgb_img(:,:,1)...
+.5870*rgb_img(:,:,2)...
+.1140*rgb_img(:,:,3);