没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
MATLAB 图像处理基本知识
MATLAB 基本的使用方法
1.
2.
读取图像: 用 imread 函数读取图像文件, 文件格式可以是 TIFF 、JPEG、GIF 、BMP、
>> f = imread('chestxray .jpg');
PNG 等。比如
读进来的图像数据被保存在变量 f 中。尾部的分号用来抑制输出。如果图片是彩色的,可以 用
rgb2gray 转换成灰度图:
>> f = rgb2gray(f);
然后可以用 size 函数看图像的大小
>> size(f)
如果 f 是灰度图像,则可以用下面的命令把这个图像的大小赋给变量
>> [M, N] = size(f);
用 whos 命令查看变量的属性
>> whos f
3. 显示图像:用 imshow 显示图像
4. imshow(f, G)
其中 f 是图像矩阵, G 是像素的灰度级, G 可以省略。比如
>> imshow(f, [100 200])
图像上所有小于等于 100 的数值都会显示成黑色, 所有大于等于 200 的数值都会显示成白色。 pixval
命令可以用来查看图像上光标所指位置的像素值。
pixval
例如
>> f = imread('rose_512.tif');
>> whos f
>> imshow(f)
如果要同时显示两幅图像,可以用 figure 命令,比如
>> figure, imshow(g) 用逗号可以分割一行中的多个命令。 imshow 的第二个参数用一个空的中括号:
>> imshow(h, []) 可以使动态范围比较窄的图像显示更清楚。
5.
6.
写图像。用 imwrite 写图像
imwrite(f, 'filename') 文件名必须包括指明格式的扩展名。也可以增加第三个参数,显式
M 和 N
指明文件的格式。比如
>> imwrite(f, 'patient10_run1.tif', 'tif')
也可以写成
>> imwrite(f, 'patient10_run1.tif')
还可以有其他参数,比如 jepg 图像还有质量参数:
>> imwrite(f, 'filename.jpg', 'quality', q)
q 是 0 到 100 之间的一个整数。对比不同质量的图像效果。用
像的格式信息,比如
>> imfinfo bubbles25.jpg
可以把图像信息保存到变量中
>> K = imfinfo('bubbles25.jpg');
>> image_bytes = K.Width * K.Height * K.BitDepth / 8;
imfinfo 命令可以查看一个图
>> compressed_btyes = K.FileSize;
>> compression_ratio = image_bytes / compressed_bytes
7. 数据类型。 MATLAB 的数据类型包括:
8. double 双精度浮点
9. uint8 无符号 8 位整数
10.
uint16
无符号 16 位整数
11.
uint32
无符号
32 位整数
12.
int8
有符号
8 位整数
13.
int16
有符号 16 位整数
14.
int32
有符号
32 位整数
15. single
单精度
16. char
字符
17. logical
逻辑型(二值)
数据类型转换
B = data_class_name(A)
比如
>> C = [1.4 1.5]
>> D = uint8(C)
图像类型分为:
Intensity image 灰度图
Binary image 二值图
Indexed image 索引图
RGB image 彩色图
在灰度图中每个像素可以是整型、浮点型或者逻辑型。图像类型的像素类型可以转换
function to from
im2uint8 uint8 logical,uint8,uint16,double
im2uint16 uint16 logical,uint8,uint16,double
mat2gray double double
im2double double logical,uint8,uint16,double
im2bw logical uint8,uint16,double
比如
g = mat2gray(A, [Amin, Amax]);
g = mat2gray(A);
g = im2double(h);
g = im2bw(f, T)
其中 A 是浮点型的图像, Amin 和 Amax 是浮点数的范围, h 和 f 是任意类型的图像,
值。
18. 数组(向量)索引:创建向量(数组) :
19. >> v = [1 3 5 7 9 11 13]
用小括号对向量进行索引(取数组中的某个元素) :
>> v(2)
转置(将行向量通过转置变成列向量) :
>> w = v.'
取向量其中的一部分:
分割的阈
>> v(1:3) 第 1 个到第 3 个
>> v(2:4)
>> v(3:end) 第 3 个到最后一个
>> v(1:end)
>> v(:) 全部
>> v(1:2:end) 第 1 个到最后一个,每次增加 2
>> v(end:-2:1) 最后一个到第 1 个,每次减 2 其中 end 总是表示最后一个。
>> x = linspace(1, 5, 10)
>> v([1 4 5])
linspace 函数产生一个范围内的平均分布。
20.
21.
矩阵索引:创建矩阵
>> A = [1 2 3; 4 5 6; 7 8 9] 取矩阵中的一个元素
>> A(2, 3) 取矩阵中的一行或者一列
>> C3 = A(:, 3)
>> R2 = A(2, :) 取矩阵中某些行某些列
>> T2 = A(1:2, 1:3) 对矩阵中某些元素进行赋值:
>> B = A;
>> B(:, 3) = 0
用 end 表示最后一行或者最后一列:
>> A(end, end) 最后一行最后一列
>> A(end, end-2) 最后一行倒数第三列
>> A(2:end, end:-2:1) 第 2 行到最后一行,最后一列到第一列,每次减 2
>> E = A([1 3], [2 3]) 第 1、3 行,第 2、3 列
>> D = logical([1 0 0; 0 0 1; 0 0 0])
>> A(D) 取 A 中由 D 指定的位置上的元素
>> v = T2(:) 把矩阵变成一个向量
>> s = sum(A(:)) 求和
>> sum(sum(A)) 可以把矩阵操作用在图像上
>> f = imread('filename');
>> fp = 矩阵列倒转
>> imshow(fp)
>> fc =
>> imshow(fc)
>> fs =
>> imshow(fs)
>> plot(f(512,:))
矩阵可以是多维的,用 size 看矩阵大小,用 ndims 命令常看矩阵的维数
>> size(A, 1)
>> ndims(A)
22.
23.
24.
25.
26.
一些常用的矩阵
zeroes(M, N)
ones(M, N)
true(M, N)
false(M, N)
剩余11页未读,继续阅读
资源评论
- apple_748270402023-10-09感谢大佬,让我及时解决了当下的问题,解燃眉之急,必须支持!
苦茶子12138
- 粉丝: 1w+
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功