2018-10-24 Matlab二值化图像的存储问题

参考网上各处写的测试代码:

name='001.jpg';
I=imread('input_001_input.jpg');
thresh=0.5;
I0=im2bw(I,thresh);
I1=im2uint8(I0);
imwrite(I1,name);

因为要用128进行截断二值化,所以归一化之后的阈值是0.5。
im2bw即为二值化操作,这一步之后图像的像素就是按阈值区分的0和1,im2uint8是重新用0和255表示像素值。
此时出现一个问题,用imwrite存储处理后的图之后,再重新写入这张图(jpg格式),发现像素组成并不是0和255,而是0~255,这就达不到我们原本处理的意图了。此时就需要设置无损模式的imwrite,这是专门针对JPEG图像的参数设置,不设置就会自动有损压缩。

imwrite(I1,name,'mode','lossless');
    原文作者:HellyCla
    原文地址: https://www.jianshu.com/p/6d696b496cb8
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞