将最大值不等的矩阵转换为统一的灰度值图像的方法

背景

最近做一个基于DeeplabV3+解包裹的任务,在处理训练数据集时,需要将mat文件中的矩阵转换为对应的Png图片。矩阵中每个值对应一个标签值,如果直接转换为png图片,那么每个矩阵的最大值和最小值分别会被转换为255和0的灰度值,中间的值则会线性的转化为灰度值。这样会导致每张转换后的图片出现灰度值不一致的情况,从而失去标签的效果,那么怎么样使其转化之后不同的图片间同一个数字对应的灰度值一致呢?为了解决这个问题,想了一下午,终于解决,在此记录一下。
基于deep

方法

# author:zzm
# datetime:2021/12/17 15:30
import scipy.io as sio
import scipy.misc
import imageio
#5000张图片循环
for i in range(1,5001):
    #Mat文件以字典形式读取
    mat_data = sio.loadmat('C:/Users/zzm/Desktop/data/k/k_'+str(i)+'.mat')
    #读取数组矩阵,256x256
    array1 = mat_data['www'].astype(int)
    #将左上角第一个值设置为20
    array1[0][0]=20
    #将矩阵转换为png图片
    imageio.imsave("C:/Users/zzm/Desktop/png/wrap("+str(i)+').png', array1)

由背景可以分析得到,之所以转换之后不同图片间相同的值对应的灰度值不同,主要是因为最大值不一致,所以我统一的将每个矩阵的左上角设置为20,比每个矩阵的最大值都大,这样在转换时就会有同样的线性转换。

结论

在这里插入图片描述
可以看到最终转换的图灰度值具有一致性。有一个小缺陷就是左上角会有一个像素的白点。这是个小问题,我把这个小白点也当成一个标签来处理,训练之后的网络用来预测时产生的语义分割图片左上角应该也会带有一个白点,所以这个白点可以放在网络之外的步骤来处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cc2018qaq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值