首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

科研宅教你怎么把图像中的内容数值化

最近有一个喜讯,猪猪成为了准妈妈。很明显的一个症状是脑子不好使了,经常一秒之前想好的事儿,下一秒就想不起来了。为了不忘了自己混饭吃的技能Matlab,适当的时候要勤于操练,顺便码个贴给Matlab新手普及一些常用的函数。

前两天拍了一张照片(图1),记录自己的尿HCG(人绒毛膜促性腺激素)测试结果,确认HCG水平正在逐渐上升。简单解释一下这个图:HCG测纸,俗称早早孕,有一个测试线(左侧)和一根对照线(右侧)。测试结果分为以下三种情况:

a.对照线没有出现,说明本次测量无效。

b.出现对照线,但没有出现测试线,称为“阴性”,表示还没有怀孕迹象。孕早期HCG水平低的时候,靠这种普通的尿检也是看不出来的,心急的可以去医院测血清HCG或者砸钱买更灵敏的测纸,不过也就早一星期而已。孕早期要测晨尿,HCG浓度最高。

c.出现对照线,并且出现测试线,称为“阳性”,表示已经怀孕。对照线颜色越深,说明尿液中HCG的浓度越高。

图1

同为科研党的猪老公看了一眼,说:“哎呀,趋势很明显啊!”我顺嘴回了一句:“转换成数据放在一个坐标轴里才比较合理吧?”接下来就教你看看怎么实现这句话。

IMREAD/IMAGE读取/显示图片

用imread函数读取保存好的jpeg文件,是一个三维8进制矩阵,这里我们用d表示。用image可以实现对变量d的可视化,不过基本没什么用,只是让你确认一下没导入错图片而已。

DOUBLE将2进制、8进制或者是16进制的数转化为10进制数

>> d1=double(d);

这样我们就能得到一个1080*1080*3的矩阵。想要提取图片中的信息,我们首先要对这个d1矩阵有一定的认识。前两个维度是是像素大小,也就是说这张照片的分辨伴侣是1080*1080的正放心图片(对,我存心拍的1:1);第三个维度没猜错的话应该分别代表R(红)、G(绿)和B(蓝)三个基本色,任何一个像素点上的颜色都是由RGB三个颜色强度叠加而成。原本的8进制颜色编码转成10进制以后,任何一个基本色的数值在10进制下介于和255(8进制FF)之间。

图2

用黑白梯度去查看这三个基本色强度的时候(图2),总感觉哪里怪怪的,为嘛黑白图都能神还原原图?好吧,不管那么多了,我们的目的达到了,取一个颜色层出来,通过颜色的强度就能说明HCG的强度。我就这里就取第一层的数据,明明为d2:

>> d2=double(d1(:,:,1));

另外一个问题,就是HCG水平越高,颜色越深,但对应的colorbar中的数值越小,和我们预期的效果相反。非常容易,加个负号,再加个基础值255,像这样:

>> d2=255-d2;

PCOLOR把一个二维矩阵用图片的形式表达出来,和等值线填充图是一个效果。

>> pcolor(d2);

>> shading flat

图3

用pcolor画出来,就是图3这个鬼样子:颜色很诡异,默认用的是那个Matlab的colormap里叫parula的;图片在竖直方向上被镜像了。解决这两个问题很容易,colormap换成黑白梯度的gray;y轴坐标翻转,就像这样

>> clmap=flipud(gray);

>> colormap(clmap);

>> set(gca,'ydir','reverse');

你也可以随便玩儿colormap,举个例子就是这样玩儿(图4)。照这个效果,理论上Matlab是可以用来修图滴~

图4

图5是正常的打开方式,可以用于下一步提取需要的信息。

图5

GINPUT选取坐标点

最基本的思路就是在测试线的区域里用ginput手动点选一个点,用floor或者ceil把选取的点坐标转成整数,就是像素位置点,再去颜色矩阵里调用这个位置上的值,就是我们需要的HCG强度咯。

这个方法我试了,不好用,得到的值有时候会不符合预期值。比如在对照线里随便找个点,有时候会获得很小的值,这是为什么嘞?当我们把某一个测试线或者对照线放大以后看,就会发现这些线里颜色并不是均匀的(图6)。

图6

找这个思路,那就应该多取一些点求个平均。但是懒人表示要手动点好多点,是不是太麻烦了?要不用个inpolygon吧。话不多说,直接上个function自己创建一个函数,自己只需要选一下一个测试线里的4个点,求这个区域内的平均值,就好了(图7)。

图7

DATENUM生成时间序列

DATETICK在坐标轴上自动生成时间坐标标签

生成图像的脚本自己看下面图8,生成的图像是图9,duang……

图8

图9

同样的思路,当你发烧了没法干正经活儿的时候,也能for fun一下(图10)。哈哈,编程软件里有一个根目录叫for fun的,快举起你的爪子来看看!

图10

Matlab使用者看过来,一起学习一起嗨!

孕妈看过来,求分享备孕、孕期攻略

喜欢手作乐趣、喜欢呆呆猪的小伙伴请一如既往支持我们!点赞、分享一个都不能少哟,有什么想和我们说的、问的、交流的,也请在下方留言。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180330G1ABTJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券