医学图像处理——数据类与图像类型之间的转换

上一期内容——医学图像处理——数据类型与图像类型

 “数据既然有人规定了,那势必这些大神同时也给出了转换手段了的!手段虽多,但是不用着急,跟小白一起掌握其中的规律,一以贯之就行,这关也不难!”

 还记得小白之前说过的数据类吗?聪明你肯定知道就是诸如double、unit8之类的,没错!接下来我们就看看当拿到与所想不一致的图像数据类型时怎么转换为想要的吧!就像炼金熔炉一样,我这有MATLAB中的一套“转化炉”。

    举个例子。当要转换为double型时,具体化为:

    类推之,相信其他的转化你也已经清楚了。

     注意有坑!

      若一个double类数组包含有区间[0, 255]之外的值,则在使用上述方法将其转换成uint8类数组时,MATLAB会将所有小于0的值转换为0,所有大于255的值转换为255, 而在0和255之间的值将全部舍去小数部分转换为整数。因此,在将double类数组转换成uint8类数组之前,有必要先对其进行适当的缩放,以使其元素的取值尽量在区间[0, 255]内。简单地说我们需要一个映射的过程。

图像类和类型间的转换

     话不多说直接上图!第一列是我们可以在MATLAB里输入的函数名称,其后两列是其转换目标和,输入图像的要求。如果乍一眼没看明白,没关系,看看如下一个例子!

     第一张是转换表,第二章则是给出了一个2*2的double型图像的转换为unit8型的过程,更具体一点就是这里将一个2*2的double型的图像矩阵输入,利用im2unit这一大武器将其转化为unit8型的图像矩阵!看到这,将两张图比较起来,相信大家对于其它函数的用法应该也是一目了然了,不存在难不难的问题了!

注意!

      函数im2double将输人转换为double类。若输人是uint8类、uint16类或logical类,则函数im2double将其转换为范围[0,1]间的double类。若输入已经是double类,则函数im2double将返回-一个与输人相等的数组。一下就是个unit8转double的例子,请注意看转化之后的取值范围哟!

图像类型之间的转换

最后,小白介绍二值和亮度图的转换,直接到图与图的层面上来一键放招!

 简单的理解就是输入亮度图像矩阵(需归一化为[0,1]),以T(T取值为[0,1],缺省时默认0.5)为分界点,输出二值图像g。

 额外,小白多嘴一句,若是对于基本的矩阵索引方法还有些疑惑地,可以直接百度,度娘的强大你懂得!

最后想分享一些小白觉得在对付图像处理的测试中非常有用的一些函数。

 

关注公众号“医电小白的进阶之路”,查看更多干货!

觉得有用就加个关注吧!

发布了10 篇原创文章 · 获赞 0 · 访问量 64

猜你喜欢

转载自blog.csdn.net/qq_44132878/article/details/105325009
今日推荐