因为大四的项目设计是关于图像切割,具体题目是 airway segementation,也就是肺气道树的切割算法。实现语言是matlab,虽然已经转了计算机,matlab以后会很少接触,但是为了完成项目,还是学习并记录一下。
format long(16)
format short(4)
format bank(2)
format rat :fraction
format short e
format long e
exp()
sqrt()
log() = ln()
log10()
log2()
向量的乘方必须用 .^ 点乘方
logspace(a,b,n) 对数值等差
length(A)包含元素的个数
max min 求向量中最大的元素
dot(a,b) 向量的点乘
cross(a,b)向量的叉乘
./ 右除
eye(4) 4*4单元矩阵
A(2,3) 选出第二行第三列的元素
A(:,i) 第i列的所有元素
A(:,2:5)第二列到第五列所有元素
inv(A) 逆矩阵
det(A)
rank(A)矩阵的秩
矩阵的LU分解
[L,U] =lu(A)
plot(x,y)
xlabel(‘x’) ylabel(‘y’) 为x,y坐标加标签
title 加图像名称
grid on 加网格
axis square axis equal 坐标轴正方形和坐标正比例和间距都相同
axis auto
‘–’ 虚线 ‘-‘实线 ‘-.‘虚点线 ‘:‘点线
legend(’’,’’)添加图例
plot(,‘r:’,‘b–’) 添加颜色 红蓝绿 rgb
axis([xmin xmax ymin ymax])
subplot(1,2,1) 一行两列的第一个区域里
subplot(1,2,2)第二个区域
ploar(thera, r )
bar(x,y)
stem(x,y,’–dg’,‘fill’)
meshgrid(-5:0.1:5,-3:0.1:3) 产生两个独立变量 x,y的集合
contour(x,y,z) 等高线
contour3(x,y,z,30) 三维的等高线
mesh(x,y,z) 产生三维图像
surf(x,y,z) 产生渐变颜色的图像
mean 平均数
sum 加
自定义函数
function ave = myaverage(x,N)
size 返回行数和列数
meidan 中位数
dither 将灰度图变成二值图
gray2ind 将灰度图转换成索引图像
grayslice 设定阈值将灰度图像转换成索引色图像
im2bw 设定亮度阈值 将真彩色 索引色 灰度值转换成二值图像
ind2gray
ind2rgb
mat2gray
rgb2gray
rgb2ind
mat2gray 将数据矩阵X转换为灰度图像
文件信息读取
INFO = imfinfo(‘filename’,‘fmt’)
inf
彩色图像 三维数组
图像文件的保存
imwrite(I,‘filename’,‘fmt’)
imwrite(X,map,‘filename’,‘fmt’)
读取
imtool 图像工具浏览器
imshow 图形图像视窗
image() imagesc() 自动设置的一些属性
image(C)
二维矩阵的时候,直接作为颜色映射表的颜色值来确定该图像的颜色
当是三维矩阵式C(:,:,1)作为红色分量,C(:,:,2)l绿色分量,C(:,:,3)蓝色分量
image用时候会显示坐标轴,主要是对图像进行拉伸和长度宽度的标注
colorbar(‘location’) location:east west north south
northoutside southoutside eastoutside westoutside
montage() 同时显示多帧图像序列
montage(I) montage(X,map
像素信息的显示
P =impixel(I)
P =impixel(X,map)
P =impixel(RGB)
返回指定像素的颜色值
图像的像素运算
图像的点运算:对比度增强 对比度拉伸 或 灰度变换
图像的加法运算
K = imadd(I,J)
K = imadd(I,30)
K = imadd(I,-30)
J = imnoise(I,type,parameters)
减法: Z = imsubtract(X,Y)
乘法运算:主要是用于掩膜操作,屏蔽图像某些部,一幅图像乘以一个常数因子 增加或改变亮度
immultiply()
将图像转换成双精度类型 im2double(A)
图像的几何变换
图像的平移
图像的缩放:imresize(A,m)m是缩放比例,可以是数组或者是数值
图像的旋转:imrotate(A,angle)取值大于零,逆时针旋转 小于零 顺时针旋转
图像的剪切:I2 =imcrop(I,rect)
图像的邻域和块操作
邻域操作:输出图像的像素点取值决定于输入图像的某个像素点及其邻域内的像素
滑动邻域操作:通用滑动邻域nlfilter
B = nlfilter(A,[m,n],fun)
列方向邻域操作:colfilt(A,[m,n],block_type,fun)
分离块操作:blockproc
图像区域选取:
多边形区域选择roipoly
BW= roipoly(I) / roipoly(I,c,r)
BW= roipoly(x,y,I,xi,yi)
灰度ROI区域选择函数roicolor
BW= roicolor(A,low,high) 返回的是二值图像,区域内是1
BW=roicolor(A,v) 二值图像,与v匹配的区域内值为1
区域填充函数roifill()
区域滤波函数roifilt2()
图像增强技术
改善图像质量by图像增强
空域处理方法 灰度变换方法和直方图方法 调节明暗对比度 滤波 线性 非线性
通过傅里叶变换将图像从空间域转换到频域 在频域进行滤波 再通过傅里叶反变换转换到空间域 低频滤波 高频滤波 带阻滤波器 同态滤波
图像的逼真度 图像的可懂度
灰度变换增强
J = imadjust(I,[low_in;high_in],[low_out;high_out],gamma)
gamma 如果大于一,增加亮色的输出 小于一增加暗色的输出
也可通过brighten(beta)改变图像的亮度 0
灰度图像反转变换
imcomplement( )
直方图增强
灰度级直方图 表示每个灰度与该灰度级出现的频数之间的统计关系
显示直方图
imhist(I,n) imhist(X,map)
直方图均衡化 histeq(I) 明暗对比度增加,更加清晰,标准差也变大了
图像均值
mean2
图像标准差
std2
计算两幅图的相关度
corr2(A,B)
等高线imcontour(I,n) n:等高线条数
线性空域滤波
线性平均滤波是一种低通滤波,允许低频部分通过,阻止高频部分通过。由于图像的边缘处于高频部分,因此线性平均滤波后会造成图像边缘的模糊。
imfilter(J,h)
在进行图像滤波的时候 实际上是进行卷积计算 用 conv2( )进行二维卷积计算
用来处理噪声~
卷积:convolution
非线性空域滤波
中值滤波 顺序统计滤波和自适应滤波
中值滤波 保护边缘的非线性图像平滑的方法
medfilt2( )
非常适合去除椒盐噪声
排序滤波 ordfilt2( )
自适应滤波 wiener2( ) 根据局部方差来调整滤波器的输出
频域滤波
时域中:g(x,y)=f(x,y)*h(x,y)
G(u,v) = F(u,v)H(u,v)
低通滤波器:图像去噪声平滑增强 但同时也抑制了图像的边界
巴特沃斯低通滤波器
高斯低通滤波器
高通滤波器:使图像得到锐化处理 突出图像的边界
理想高通滤波器
巴特沃斯滤波器
高斯高通滤波器
带阻滤波器:消除一定频率范围内的周期噪声
理想带阻滤波器
巴特沃斯带阻滤波器
高斯带阻滤波器
图像复原技术
噪声:图像模糊 失真 有噪声
复原:沿图像退化的逆过程处理
抑制噪声和保持细节往往是一对矛盾
g(x,y)=f(x,y)h(x,y)+n(x,y)
f(x,y)为原图像,n(x,y)为噪声
图像噪声:来自采集和传输过程 加性和乘性
噪声介绍:高斯噪声 (正态噪声)‘gaussian’
椒盐噪声 两种灰度值 中值滤波 salt & pepper 后面的数是噪声密度
均匀分布噪声 localvar
泊松噪声 poisson
指数分布噪声
伽马分布噪声
imnoise(I,type,parameters)
图像分割技术
边缘分割技术 阈值分割技术 区域分割技术
边缘分割技术:利用物体和背景在某种图像特性上的差异来实现的。常见的边缘算法有微分算子,canny算子和LOG算子 微分算子:sobel算子 Roberts算子 prewit算子
图像的中线段和间断点
将图像点某个邻域的每个像素值都与模板对应系数相乘,累加 得到该点新的像素值
imfilter(I,h1)
Roberts算子 [1 0; 0 -1] [0 1; -1 0]
利用图像的垂直和水平差分来逼近梯度算子
edge 返回值为二值图像 和输入图像大小相同 类型为逻辑型
BW = edge(I,‘roberts’)
BW = edge(I,‘roberts’,thresh) 忽略雄安与thresh的像素值
[BW,thresh] = edge(I,‘roberts’,) 返回采用的分割阈值
prewitt算子 3*3矩阵 [-1 -1 -1; 0 0 0; 1 1 1] [-1 0 1; -1 0 1;-1 0 1]
Sobel算子
通过fspecial( )产生预定义模板
canny算子
BW=edge(I,‘canny’)
BW=edge(I,‘canny’,thresh) thresh为两个元素的向量 一个低阈值 一个高阈值 如果只有一
0.4*thersh作为低阈值
LOG算子
Laplacian拉普拉斯算子
Gaussian先进行平滑然后采用Laplacian算子根据二阶导数过零点来检测图像边缘
BW=edge(I,‘log’);
BW=edge(I,‘log’,thresh);
BW=edge(I,‘log’,thresh,sigma)
阈值分割技术
全局阈值: 将整个图像的灰度阈值设置为常数
im2bw 将灰度图像和彩色图像转换成二值图像
Otus阈值分割
graythresh( )获取该图像的最优阈值 再通过im2bw进行分割
迭代式阈值分割
区域分割技术
区域生长法 分水岭分割法
区域生长法:串行区域分割的图像分割方法 将具有相似性质的像素集合起来构成区域
比较普遍 ,可以用来分割比较复杂的图像,是一种迭代的方法,空间时间开销
都比较大 会造成过度分割 将图像分割成过多的区域
三个关键:种子点的选取 生长规则 终止条件
分水岭分割:自适应的多阈值算法 watershed( )