阶跃函数卷积自己_ITK中的函数梳理和解释
![](/assets/blank.gif)
做视觉的都知道opencv,但它只能处理2D的图像。对于医学图像处理,那就不得不祭出ITK(Insight Segmentation and Registration Toolkit)了(python下可以使用SimpleITK),这是一个非常强悍的3D分割和配准开源工具箱。下图是它所涉及的类别。
![](/assets/blank.gif)
有必要花点时间对他里面的图像处理相关接口进行一次梳理,一方面可以系统性的了解整个图像处理和立体视觉相关的知识框架,也方便后面的使用。以下链接是官方函数说明手册,非常详细,本文制作部分梳理和解释,详细内容请参考以下文档。
https://itk.org/ItkSoftwareGuide.pdfitk.org
1.Reading and Writing Images
这个就不多少了,dcm,nii.gz,nrrd,mha,mhd等几乎所有的医学影像的常见格式都支持。
2.Filtering
(1)阈值滤波器
二值阈值:BinaryThresholdImageFilter,阈值后得到二值图像
通用阈值:ThresholdImageFilter,阈值后,阈值范围内的图像保持不变,阈值范围外被设定为固定值。(有点像clip操作,更通用)
(2)边缘检测器
Canny边缘检测:CannyEdgeDetectionImageFilter,一种经典的边缘检测滤波器
(3)强制转换和灰度映射
- 线性映射:
CastImageFilter:最简单,类型强壮,比如int转float
RescaleIntensityImageFilter:对范围进行重新映射,需输入转换后的最大值和最小值
ShiftScaleImageFilter:灰度上的平移和尺度变换,需输入平移量和尺度变化量
NormalizeImageFilter:归一化,减均值除方差。
- 非线性映射:
SigmoidImageFilter,用Sigmoid函数进行映射,注意不是标准sigmoid函数,需要输入β和α参数:
![](/assets/blank.gif)
(4)梯度
梯度幅度:GradientMagnitudeImageFilter
带平滑的梯度幅度:GradientMagnitudeRecursiveGaussianImageFilter,求梯度之前为了降低噪声的影响,通常会先做一个高斯滤波平滑,边缘提取效果会更好。
无平滑偏导:DerivativeImageFilter,计算沿某一轴方向上的偏导。
(5)二阶导
不平滑直接求导会放大很多噪声,尤其是二阶导。可以使用RecursiveGaussianImageFilter进行计算。
递归高斯滤波器:RecursiveGaussianImageFilter,一种快速的IIR高斯滤波器
拉普拉斯滤波器:LaplacianRecursiveGaussianImageFilter,直接计算二阶导
(6)邻域滤波
均值滤波:MeanImageFilter
中值滤波:MedianImageFilter
(7)数学形态学
- 二值形态学
腐蚀:BinaryErodeImageFilter
膨胀:BinaryDilateImageFilter
可通过BinaryBallStructuringElement设置形态学操作子的大小
- 灰度形态学:
腐蚀:GrayscaleErodeImageFilter
膨胀:GrayscaleDilateImageFilter
仍是使用BinaryBallStructuringElement设置形态学操作子的大小
(8)投票滤波器
投票的含义:领域内哪种类别多听谁,有点像投票。这叫投票操作。
二值中值滤波:BinaryMedianImageFilter,在二值图像上进行中值滤波,管用的二值图降噪(投票机制,周围相似哪个类别多就听谁,而不需要再排序)
二值空洞填充:VotingBinaryHoleFillingImageFilter,通过投票的方式实现的空洞填充操作。这种方式还有助于平滑边界。滤波效果本质上和边缘曲率有关系。
迭代空洞填充:VotingBinaryIterativeHoleFillingImageFilter,迭代运行上一个函数,有平滑边缘和空洞填充的效果。
(9)平滑滤波器
- 模糊器
离散高斯模糊:DiscreteGaussianImageFilter,高斯分布被离散化后,用一个卷积核表示,然后卷积核在图像上进行卷积。这种方法存在的固有缺陷:方差大的高斯核需要更大的kernel size去编码,导致大方差高斯滤波计算量很大。递归IIR高斯滤波:SmoothingRecursiveGaussianImageFilter,为解决离散高斯滤波的固有缺陷,通过IIR滤波器,近似实现高斯卷积和求导。不同方差的高斯滤波都可以通过固定大小的卷积核实现。还可设置对其一阶或二阶导进行高斯滤波(可以通过这个实现二阶导)二项模糊:BinomialBlurImageFilter,计算每个维度上的最邻近平均,迭代进行,迭代次数越多结果越接近使用高斯核进行滤波的结果。
- 局部模糊
GaussianBlurImageFunctionZ:文档中没有具体介绍
- 边缘保持平滑
边缘保持的目的:一般的平滑,都会吧梯度大的地方削弱,所以边界信息也会丢失。保边去噪希望值去除孤立点噪声,保持边缘。
各向异性扩散:把图像看作热量场,每个pixel看做热流,根据和邻域像素的灰度差,决定是否向旁边扩散。和某个方向的邻域像素的灰度差异越大,向这个方向的扩散速度越慢。扩散过程就是在平滑图像,但是平滑的区域不会向边界扩散,从而达到保边的效果。梯度各向异性扩散:GradientAnisotropicDiffusionImageFilter,利用梯度控制扩散速率。扩散系数和梯度成反比。即传统的PM扩散。边缘增强特性,边缘对比度增加。曲率各向异性扩散:CurvatureAnisotropicDiffusionImageFilter。曲率在图像里面其实代表二阶导(梯度的变化),二阶导相比于一阶导的精细细节反映能力更好,而对大边界的反应能力差一些。因此该滤波器对对对比敏感度更低,但是可以保持更细节的结构信息。
曲率流:CurvatureFlowImageFilter,
最小最大曲率流
双边滤波
- 向量和色彩图像的边缘保持平滑
向量梯度各向异性扩散
向量曲率各向异性扩散
彩图的梯度各向异性扩散
彩图的曲率各向异性扩散
- 距离场
丹尼尔松距离场:DanielssonDistanceMapImageFilter,丹尼尔松提出的,
(10)几何变换
(11)频域
(12)表面提取
3.配准
4.分割
5.统计
未完待续...
阶跃函数卷积自己_ITK中的函数梳理和解释相关推荐
- Unity3D中的函数方法及解释
一.刷新函数 Update 当MonoBehaviour启用时,其Update在每一帧被调用. LateUpdate 当Behaviour启用时,其LateUpdate在每一帧被调用. FixedUp ...
- php+imagick详解,PHP中imagick函数的中文解释_php技巧
imagick的:: adaptiveBlurImage - 增加了自适应模糊滤镜图像 imagick的:: adaptiveResizeImage - 自适应调整图像数据依赖三角 imagick的: ...
- pandas中dropna函数_快速解释如何使用pandas的inplace参数
介绍 在操作dataframe时,初学者有时甚至是更高级的数据科学家会对如何在pandas中使用inplace参数感到困惑. 更有趣的是,我看到的解释这个概念的文章或教程并不多.它似乎被假定为知识或自 ...
- Matlab中regress函数各参数解释
转载博客:http://blog.csdn.net/yangss123/article/details/74008205 在matlab中regress()函数可以进行回归分析,regress()函数 ...
- MFC中UpdateData函数的使用解释
解释之一 当你使用了ClassWizard建立了控件和变量之间的联系后:当你修改了变量的值,而希望对话框控件更新显示,就应该在修改变量后调用 UpdateData(FALSE):如果你希望知道用户在对 ...
- php imagick,PHP中imagick函数的中文解释_PHP
imagick的:: adaptiveBlurImage - 增加了自适应模糊滤镜图像 imagick的:: adaptiveResizeImage - 自适应调整图像数据依赖三角 imagick的: ...
- php imagick 滤镜,PHP中imagick函数的中文解释
imagick的:: adaptiveBlurImage - 增加了自适应模糊滤镜图像 imagick的:: adaptiveResizeImage - 自适应调整图像数据依赖三角 imagick的: ...
- matlab中repmat函数使用举例解释(会识字就能看懂)
文章目录 一.repmat的其中一种基本使用方法(常用) 二.使用举例(可以参考m和n变化自行意会) 一.repmat的其中一种基本使用方法(常用) repmat(s,m,n) %repmat实为复制 ...
- matlab stem函数坐标轴_MATLAB中stem函数用法
stem(Y) 将数据序列Y从x轴到数据值按照茎状形式画出,以圆圈终止.如果Y是一个矩阵,则将其每一列按照分隔方式画出. stem(X,Y)在X的指定点处画出数据序列Y. stem(...,'fil ...
最新文章
- SOA的缺陷及其与微服务的关系
- MyBatisPlus自动生成代码springboot+mybatis+mysql 以及动态sql生成方法(测试可用版)
- ZZULIOJ 1060:逆序数字
- 利用Office Chart 制作柱图(一个柱子)
- Java 反射机制之 Class
- Stimulsoft Reports.Web 2022.2.3 Crack
- 斗地主系列之牌型判断
- html+div+动画效果,CSS3效果:animate实现点点点loading动画效果(一)
- 45本程序员圣经级别书籍,包邮送到家
- 高薪程序员面试题精讲系列23之说一下如何实现文件上传、下载以及断点续传?
- “过关斩将”的第一台电脑
- cle IMP-00015: 由于对象已存在, 下列语句失败
- nonlocal和global的区别
- C#筛选DataTable的数据
- 不会吧不会吧?价值“百万”的社招面试题惨遭泄露:猛补了这个,真香...
- 什么是域名解析?具体是如何实现的?--金万维
- 关于“拉丁方”的C语言程序
- 逐年大幅扩招,进入这所全球第24位的CS院校越来越容易?
- 哈夫曼树与哈夫曼编码:
- [附源码]java毕业设计新闻发布和评论管理系统
热门文章
- Matlab 线性方程拟合,求助 用matlab拟合三元线性回归方程及分析
- LocalDateTime 获取当前(年/月)第一天及最后一天 及 获取当天起始时间
- 族蚂网搭建网站最重要的因素是什么?
- Android MIME TYPE的基本用法
- 古月居机器视觉开发——ROS+opencv的图像处理方法(三)
- The Devops Handbook 读书笔记02 PartI
- DevOps整合Jenkins+k8s
- u盘运行linux失败,u盘安装linux失败的解决方法
- Chrome没有扩展程序选项怎么解决
- oracle的rac没有同步序列,oracle rac序列乱