MATLAB图像处理基本知识
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
27. magic(M)
28. rand(M, N)
29.randn(M, N)
其中M、N表示矩阵的行数和列数。比如
>>A = 5 * ones(3, 3)
>>magic(3)
>>B = rand(2, 4)
30.函数:可以把一系列的MATLAB语句或者一个带参数的函数放在扩展名叫做m的文件中。一个带函数的m文件有一下部分组成
>>imwrite(f, 'patient10_run1.tif', 'tif')
也可以写成
>>imwrite(f, 'patient10_run1.tif')
还可以有其他参数,比如jepg图像还有质量参数:
>>imwrite(f, 'filename.jpg', 'quality', q)
q是0到100之间的一个整数。对比不同质量的图像效果。用imfinfo命令可以查看一个图像的格式信息,比如
any如果一整列只要有一个是真,则结果是真
比如
>>xor(A, B)
>>all(A)
>>any(A)
>>all(B)
>>any(B)
一些重要的常量
ans
eps
i(或者j)
NaN或者nan
pi
realmax
realmin
computer
version
MATLAB中一般常量的写法
3
-99
0.00001
9.6397238
>>imshow(fs)
>>plot(f(512,:))
矩阵可以是多维的,用size看矩阵大小,用ndims命令常看矩阵的维数
>>size(A, 1)
>>ndims(A)
22.一些常用的矩阵
23. zeroes(M, N)
24. ones(M, N)
25. true(M, N)
26. false(M, N)
>>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 00; 001; 000])
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表示最后一行或者最后一列:
imadd两个图像相加,或者一个图像加上一个常量
imsubstract两个图像相减,或者一个图像减掉一个常量
immultiply两个图像相乘,或者一个图像乘上一个常量
imdivide两个图像相除,或者一个图像除以一个常量
imabsdiff两个图像的差的绝对值
imcomplement求一个图像的反色图
function to from
im2uint8 uint8 logical,uint8,uint16,double
im2uint16 uint16 logical,uint8,uint16,double
mat2gray doubledouble
im2double double logical,uint8,uint16,double
MATLAB图像处理基本知识
MATLAB基本的使用方法
1.读取图像:用imread函数读取图像文件,文件格式可以是TIFF、JPEG、GIF、BMP、PNG等。比如
2.>>f =imread('chestxray.jpg');
读进来的图像数据被保存在变量f中。尾部的分号用来抑制输出。如果图片是彩色的,可以用rgb2gray转换成灰度图:
>>f = rgb2gray(f);
然后可以用size函数看图像的大小
>>size(f)
如果f是灰度图像,则可以用下面的命令把这个图像的大小赋给变量M和N
>>[M, N] = size(f);
用whos命令查看变量的属性
>>whosf
3.显示图像:用imshow显示图像
4.imshow(f, G)
其中f是图像矩阵,G是像素的灰度级,G可以省略。比如
>>editsumprod
这命令会编辑已经存在的sumprod.m文件,如果没有则自动在当前目录中创建一个sumprod.m并开始编辑。
36.运算符。运算符可以分为算术运算符,关系运算符和逻辑运算符。算术运算符分为矩阵算术运算符和数组算术运算符。
37. +矩阵和数组加法plus(A, B)a+b, A+B
inlincomb求一组图像的线性组合
关系运算符包括
<
<=
>
>=
==
~=
关系运算符的结果是逻辑型的矩阵,比如
>>A = [1 2 3; 4 5 6; 7 8 9]
>>B = [0 2 4; 3 5 6; 3 4 9]
>>A == B
>>A>= B
如果关系运算符两边都是矩阵,则要求两边的矩阵是同样大小的。或者一边是矩阵一边是常数,或者两边都是常数,那也是可以。
38. -矩阵和数组减法minus(A,B) a-b, A-B
39. .*数组乘法times(A,B) C=A.*B,意味着C(I,J) = A(I,J)*B(I,J)
40. *矩阵乘法mtimes(A,B) A*B,表示线性代数中的矩阵运算,或者a*A
41. ./数组右除rdivide(A,B) C=A./B,意味着C(I,J)=A(I,J)/B(I,J)
>>A(D)取A中由D指定的位置上的元素
>>v = T2(:)把矩阵变成一个向量
>>s = sum(A(:))求和
>>sum(sum(A))
可以把矩阵操作用在图像上
>>f =imread('filename');
>>fp=矩阵列倒转
>>imshow(fp)
>>fc=
>>imshow(fc)
>>fs=
>>[s, p] =sumprod(f, g);
也可以被其它函数调用。如果只有一个返回值,调用时中括号也是可以省略的,比如
>>y = sum(x);
H1行是文本的第一行,是一个单行的注释,紧跟在函数定义行后面,之间不能有空行。比如
% SUMPROD Computes the sum and product of two images.
百分号开始的文字表示注释。当使用帮助命令
>>helpfunction_name
时,这个H1行会被首先显示出来。如果使用lookfor命令,则会在所有H1行中查找指定的关键字。这一行应该提供这个函数功能的一个概述。帮助部分是紧跟在H1后的文本块,中间没有空行,用来提供对这个函数更详细的帮助说明。在使用help命令时会显示所有这部分内容。这部分内容由注释语句构成,全部由%开始。接下来第一个非注释语句表示函数体的开始。函数体包含进行计算的语句和给返回值赋值的语句。函数题中的所有注释(百分号开始的行)被认为是普通的注释,不是H1或者帮助部分。m文件可以用任何文本编辑器创建和编辑,只要用.m扩展名保存在MATLAB可以搜索到的路径里面。另一个创建和编辑函数的方法是在命令行输入edit命令,比如
>>imshow(f, [100 200])
图像上所有小于等于100的数值都会显示成黑色,所有大于等于200的数值都会显示成白色。pixval命令可以用来查看图像上光标所指位置的像素值。
pixval
例如
>>f =imread('rose_512.tif');
>>whosf
>>imshow(f)
如果要同时显示两幅图像,可以用figure命令,比如
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是任意类型的图像,T是分割的阈值。
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字符
46. ^矩阵指数mpower(A,B)请查看帮助
47. .'向量和矩阵转置transpose(A) A.'
48. '复数的共轭ctranspose(A) A'
49. +单目加号uplus(A) +A与0+A相同
50. -单目负号uminus(A) -A与0-A相同
图像处理工具包还提供其他一些算术运算
1.60210e-20
6.02252e23
1i
-3.14159j
3e5j
51.控制流。包括
52. ifif和else,elseif组合,条件执行一组语句
53. for指定次数重复执行一组语句
54. while按条件反复执行一组语句
>>imfinfobubbles25.jpg
可以把图像信息保存到变量中
>>K =imfinfo('bubbles25.jpg');
>>image_bytes=K.Width*K.Height*K.BitDepth/ 8;
>>compressed_btyes=K.FileSize;
>>compression_ratio=image_bytes/compressed_bytes
31.函数定义行
32. H1行
33.帮助部分
34.函数体
35.注释
函数定义行的格式是
function [outputs] = name(inputs)
比如要写一个函数计算两个图像的和以及乘积
function [s, p] =sumprod(f, g)
其中f和g是输入的图像,而s是和,p是乘积。返回值用中括号括起来,如果返回值只有一个,可以省略中括号。如果函数没有输出,则中括号和等号都可以省略。函数名字的命名规则和C语言是相同的。定义好的函数可以在命令行调用:
>>figure,imshow(g)
用逗号可以分割一行中的多个命令。imshow的第二个参数用一个空的中括号:
>>imshow(h, [])
可以使动态范围比较窄的图像显示更清楚。
5.写图像。用imwrite写图像
6.imwrite(f, 'filename')
文件名必须包括指明格式的扩展名。也可以增加第三个参数,显式指明文件的格式。比如
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个到最后一个,Hale Waihona Puke Baidu次增加2
>>v(end:-2:1)最后一个到第1个,每次减2
其中end总是表示最后一个。
>>x =linspace(1, 5, 10)
>>v([1 4 5])
linspace函数产生一个范围内的平均分布。
20.矩阵索引:创建矩阵
42. .\数组左除ldivide(A,B) C=A.\B,意味着C(I,J)=B(I,J)/A(I,J)
43. /矩阵右除mrdivide(A,B) A/B意味着A*inv(B), inv是矩阵求逆
44. \矩阵左除mldivide(A,B) A\B意味着inv(A)*B
45. .^数组指数power(A, B) C=A.^B,意味着C(I,J)=A(I,J)^B(I,J)
>>A>3
>>3 ~= 4
逻辑运算符包括与、或、非三个运算
& AND
| OR
~ NOT
在matlab中非0被认为是真,0被认为是假。比如
A = [1 2 0; 0 4 5]
B = [1 -2 3; 0 11]
>>A & B
MATLAB还有其它一些逻辑运算函数:
xor异或
all如果一整列都是真,则结果是真
17. logical逻辑型(二值)
数据类型转换
B =data_class_name(A)
比如
>>C = [1.4 1.5]
>>D = uint8(C)
图像类型分为:
Intensity image灰度图
Binary image二值图
Indexed image索引图
RGB image彩色图
在灰度图中每个像素可以是整型、浮点型或者逻辑型。图像类型的像素类型可以转换
28. rand(M, N)
29.randn(M, N)
其中M、N表示矩阵的行数和列数。比如
>>A = 5 * ones(3, 3)
>>magic(3)
>>B = rand(2, 4)
30.函数:可以把一系列的MATLAB语句或者一个带参数的函数放在扩展名叫做m的文件中。一个带函数的m文件有一下部分组成
>>imwrite(f, 'patient10_run1.tif', 'tif')
也可以写成
>>imwrite(f, 'patient10_run1.tif')
还可以有其他参数,比如jepg图像还有质量参数:
>>imwrite(f, 'filename.jpg', 'quality', q)
q是0到100之间的一个整数。对比不同质量的图像效果。用imfinfo命令可以查看一个图像的格式信息,比如
any如果一整列只要有一个是真,则结果是真
比如
>>xor(A, B)
>>all(A)
>>any(A)
>>all(B)
>>any(B)
一些重要的常量
ans
eps
i(或者j)
NaN或者nan
pi
realmax
realmin
computer
version
MATLAB中一般常量的写法
3
-99
0.00001
9.6397238
>>imshow(fs)
>>plot(f(512,:))
矩阵可以是多维的,用size看矩阵大小,用ndims命令常看矩阵的维数
>>size(A, 1)
>>ndims(A)
22.一些常用的矩阵
23. zeroes(M, N)
24. ones(M, N)
25. true(M, N)
26. false(M, N)
>>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 00; 001; 000])
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表示最后一行或者最后一列:
imadd两个图像相加,或者一个图像加上一个常量
imsubstract两个图像相减,或者一个图像减掉一个常量
immultiply两个图像相乘,或者一个图像乘上一个常量
imdivide两个图像相除,或者一个图像除以一个常量
imabsdiff两个图像的差的绝对值
imcomplement求一个图像的反色图
function to from
im2uint8 uint8 logical,uint8,uint16,double
im2uint16 uint16 logical,uint8,uint16,double
mat2gray doubledouble
im2double double logical,uint8,uint16,double
MATLAB图像处理基本知识
MATLAB基本的使用方法
1.读取图像:用imread函数读取图像文件,文件格式可以是TIFF、JPEG、GIF、BMP、PNG等。比如
2.>>f =imread('chestxray.jpg');
读进来的图像数据被保存在变量f中。尾部的分号用来抑制输出。如果图片是彩色的,可以用rgb2gray转换成灰度图:
>>f = rgb2gray(f);
然后可以用size函数看图像的大小
>>size(f)
如果f是灰度图像,则可以用下面的命令把这个图像的大小赋给变量M和N
>>[M, N] = size(f);
用whos命令查看变量的属性
>>whosf
3.显示图像:用imshow显示图像
4.imshow(f, G)
其中f是图像矩阵,G是像素的灰度级,G可以省略。比如
>>editsumprod
这命令会编辑已经存在的sumprod.m文件,如果没有则自动在当前目录中创建一个sumprod.m并开始编辑。
36.运算符。运算符可以分为算术运算符,关系运算符和逻辑运算符。算术运算符分为矩阵算术运算符和数组算术运算符。
37. +矩阵和数组加法plus(A, B)a+b, A+B
inlincomb求一组图像的线性组合
关系运算符包括
<
<=
>
>=
==
~=
关系运算符的结果是逻辑型的矩阵,比如
>>A = [1 2 3; 4 5 6; 7 8 9]
>>B = [0 2 4; 3 5 6; 3 4 9]
>>A == B
>>A>= B
如果关系运算符两边都是矩阵,则要求两边的矩阵是同样大小的。或者一边是矩阵一边是常数,或者两边都是常数,那也是可以。
38. -矩阵和数组减法minus(A,B) a-b, A-B
39. .*数组乘法times(A,B) C=A.*B,意味着C(I,J) = A(I,J)*B(I,J)
40. *矩阵乘法mtimes(A,B) A*B,表示线性代数中的矩阵运算,或者a*A
41. ./数组右除rdivide(A,B) C=A./B,意味着C(I,J)=A(I,J)/B(I,J)
>>A(D)取A中由D指定的位置上的元素
>>v = T2(:)把矩阵变成一个向量
>>s = sum(A(:))求和
>>sum(sum(A))
可以把矩阵操作用在图像上
>>f =imread('filename');
>>fp=矩阵列倒转
>>imshow(fp)
>>fc=
>>imshow(fc)
>>fs=
>>[s, p] =sumprod(f, g);
也可以被其它函数调用。如果只有一个返回值,调用时中括号也是可以省略的,比如
>>y = sum(x);
H1行是文本的第一行,是一个单行的注释,紧跟在函数定义行后面,之间不能有空行。比如
% SUMPROD Computes the sum and product of two images.
百分号开始的文字表示注释。当使用帮助命令
>>helpfunction_name
时,这个H1行会被首先显示出来。如果使用lookfor命令,则会在所有H1行中查找指定的关键字。这一行应该提供这个函数功能的一个概述。帮助部分是紧跟在H1后的文本块,中间没有空行,用来提供对这个函数更详细的帮助说明。在使用help命令时会显示所有这部分内容。这部分内容由注释语句构成,全部由%开始。接下来第一个非注释语句表示函数体的开始。函数体包含进行计算的语句和给返回值赋值的语句。函数题中的所有注释(百分号开始的行)被认为是普通的注释,不是H1或者帮助部分。m文件可以用任何文本编辑器创建和编辑,只要用.m扩展名保存在MATLAB可以搜索到的路径里面。另一个创建和编辑函数的方法是在命令行输入edit命令,比如
>>imshow(f, [100 200])
图像上所有小于等于100的数值都会显示成黑色,所有大于等于200的数值都会显示成白色。pixval命令可以用来查看图像上光标所指位置的像素值。
pixval
例如
>>f =imread('rose_512.tif');
>>whosf
>>imshow(f)
如果要同时显示两幅图像,可以用figure命令,比如
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是任意类型的图像,T是分割的阈值。
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字符
46. ^矩阵指数mpower(A,B)请查看帮助
47. .'向量和矩阵转置transpose(A) A.'
48. '复数的共轭ctranspose(A) A'
49. +单目加号uplus(A) +A与0+A相同
50. -单目负号uminus(A) -A与0-A相同
图像处理工具包还提供其他一些算术运算
1.60210e-20
6.02252e23
1i
-3.14159j
3e5j
51.控制流。包括
52. ifif和else,elseif组合,条件执行一组语句
53. for指定次数重复执行一组语句
54. while按条件反复执行一组语句
>>imfinfobubbles25.jpg
可以把图像信息保存到变量中
>>K =imfinfo('bubbles25.jpg');
>>image_bytes=K.Width*K.Height*K.BitDepth/ 8;
>>compressed_btyes=K.FileSize;
>>compression_ratio=image_bytes/compressed_bytes
31.函数定义行
32. H1行
33.帮助部分
34.函数体
35.注释
函数定义行的格式是
function [outputs] = name(inputs)
比如要写一个函数计算两个图像的和以及乘积
function [s, p] =sumprod(f, g)
其中f和g是输入的图像,而s是和,p是乘积。返回值用中括号括起来,如果返回值只有一个,可以省略中括号。如果函数没有输出,则中括号和等号都可以省略。函数名字的命名规则和C语言是相同的。定义好的函数可以在命令行调用:
>>figure,imshow(g)
用逗号可以分割一行中的多个命令。imshow的第二个参数用一个空的中括号:
>>imshow(h, [])
可以使动态范围比较窄的图像显示更清楚。
5.写图像。用imwrite写图像
6.imwrite(f, 'filename')
文件名必须包括指明格式的扩展名。也可以增加第三个参数,显式指明文件的格式。比如
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个到最后一个,Hale Waihona Puke Baidu次增加2
>>v(end:-2:1)最后一个到第1个,每次减2
其中end总是表示最后一个。
>>x =linspace(1, 5, 10)
>>v([1 4 5])
linspace函数产生一个范围内的平均分布。
20.矩阵索引:创建矩阵
42. .\数组左除ldivide(A,B) C=A.\B,意味着C(I,J)=B(I,J)/A(I,J)
43. /矩阵右除mrdivide(A,B) A/B意味着A*inv(B), inv是矩阵求逆
44. \矩阵左除mldivide(A,B) A\B意味着inv(A)*B
45. .^数组指数power(A, B) C=A.^B,意味着C(I,J)=A(I,J)^B(I,J)
>>A>3
>>3 ~= 4
逻辑运算符包括与、或、非三个运算
& AND
| OR
~ NOT
在matlab中非0被认为是真,0被认为是假。比如
A = [1 2 0; 0 4 5]
B = [1 -2 3; 0 11]
>>A & B
MATLAB还有其它一些逻辑运算函数:
xor异或
all如果一整列都是真,则结果是真
17. logical逻辑型(二值)
数据类型转换
B =data_class_name(A)
比如
>>C = [1.4 1.5]
>>D = uint8(C)
图像类型分为:
Intensity image灰度图
Binary image二值图
Indexed image索引图
RGB image彩色图
在灰度图中每个像素可以是整型、浮点型或者逻辑型。图像类型的像素类型可以转换