如何拯救一个矩阵作为图像吗?

584(30天)
Devadath您正在
Devadath您正在 2016年3月4日
评论道: 图像分析 2022年1月10日
我有一个矩阵 finalMat 的数据类型 值在0到255的范围。它实际上对应于一些形象。我显示如下:
imshow (finalMat []);
但是当我试图挽救它使用下面的代码,保存的图像是完全白色的。
imwrite (finalMat“myImage.jpeg”,“JPEG”);
我想保存磁盘上的形象没有改变中的值 finalMat 矩阵。当我读即保存的图像 myImage.jpeg ,我必须得到相同的值 finalMat 。有人能帮助节省图像吗?提前谢谢你. .
4评论
Devadath您正在
Devadath您正在 2016年3月4日
当然!谢谢你:)

登录置评。

接受的答案

图像分析
图像分析 2022年1月9日
编辑:图像分析 2022年1月9日
拯救一个浮点形象TIFF文件,这应该这样做。
%创建浮点图像。
rgbImage =兰德(10年,20年,3);
%的形象必须是单一的精度。
rgbImage =单(rgbImage);
%显示它。
imshow (rgbImage“InitialMagnification”,1000)
轴(“上”,“图像”);
%创建tiff对象。
文件名=“_floatingPointImage.tif”;
tiffObject = Tiff(文件名,' w ')
%设置标签。
tagstruct。ImageLength =大小(rgbImage, 1);
tagstruct。ImageWidth =大小(rgbImage, 2);
tagstruct。压缩= Tiff.Compression.None;
tagstruct。SampleFormat = Tiff.SampleFormat.IEEEFP;
tagstruct。光度= Tiff.Photometric.MinIsBlack;
tagstruct。BitsPerSample = 32;
tagstruct。SamplesPerPixel =大小(rgbImage, 3);
tagstruct。PlanarConfiguration = Tiff.PlanarConfiguration.Chunky;
tiffObject.setTag (tagstruct);
%数组写入磁盘。
tiffObject.write (rgbImage);
tiffObject.close;
%回忆的形象。
m2 = imread(文件名)
%检查,这是我们写的一样。
maxDiff = max (max (m2-rgbImage))
7评论
图像分析
图像分析 2022年1月10日
@Federico Fioretti 它的工作。看这里是证明:
%创建浮点图像。
rgbImage = 3000 *兰德(10年,20年,3);
%的形象必须是单一的精度。
rgbImage =单(rgbImage);
%显示它。
imshow (rgbImage“InitialMagnification”,1000)
轴(“上”,“图像”);
%创建tiff对象。
文件名=“_floatingPointImage.tif”;
tiffObject = Tiff(文件名,' w ')
%设置标签。
tagstruct。ImageLength =大小(rgbImage, 1);
tagstruct。ImageWidth =大小(rgbImage, 2);
tagstruct。压缩= Tiff.Compression.None;
tagstruct。SampleFormat = Tiff.SampleFormat.IEEEFP;
tagstruct。光度= Tiff.Photometric.MinIsBlack;
tagstruct。BitsPerSample = 32;
tagstruct。SamplesPerPixel =大小(rgbImage, 3);
tagstruct。PlanarConfiguration = Tiff.PlanarConfiguration.Chunky;
tiffObject.setTag (tagstruct);
%数组写入磁盘。
tiffObject.write (rgbImage);
tiffObject.close;
%回忆的形象。
m2 = imread(文件名)
%检查,这是我们写的一样。
maxDiff = max (max (m2-rgbImage))%应该是零。
你可以看到我有价值高达3000,我因为maxDiff回到相同的值是零。不要试图显示在MATLAB因为MATLAB预计所有的RGB图像的范围0 - 1。我认为这将是应用于摄影测量程序,所以不用担心如何显示在MATLAB。如果你真的想在MATLAB你必须看到它除以最大价值得到一个按比例缩小的图像之前你叫imshow ()。
scaledRGB =重新调节(rgbImage 0 1);
imshow (scaledRGB);

登录置评。

更多的答案(5)

图像分析
图像分析 2016年3月4日
如果你的形象uint8,我建议PNG。这是无损压缩。约三分之一BMP和TIFF图像的大小。比JPEG但以完美的质量,与肮脏的图片你可以从JPEG压缩太多。不要使用jpeg图像分析。创建你的文件名. png扩展,您不需要使用imwrite的第三个参数。
imwrite (rgbImage“fubar.png”);
你可以找出其他格式允许使用imformats命令:
> > imformats
EXTISA信息α描述
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
骨形态发生蛋白isbmpimbmpinforeadbmpwritebmp0窗位图
坏蛋iscurimcurinforeadcur1窗口光标资源
罚球适合isfitsimfitsinforeadfits0灵活的图像传输系统
gifisgifimgifinforeadgifwritegif0图形交换格式
hdfishdfimhdfinforeadhdfwritehdf0分层数据格式
图标isicoimicoinforeadico1Windows图标资源
j2cj2kisjp2imjp2inforeadjp2writej2c0JPEG 2000(原始codestream)
jp2isjp2imjp2inforeadjp2writejp20JPEG 2000(第1部分)
jpfjpxisjp2imjp2inforeadjp20JPEG 2000(第2部分)
jpgjpegisjpgimjpginforeadjpgwritejpg0联合摄影专家组
pbmispbmimpnminforeadpnmwritepnm0可移植的位图
图形文件ispcximpcxinforeadpcxwritepcx0Windows画笔
的pgmispgmimpnminforeadpnmwritepnm0便携式Graymap
pngispngimpnginforeadpngwritepng1便携式网络图形
pnmispnmimpnminforeadpnmwritepnm0便携式任何地图
ppmisppmimpnminforeadpnmwritepnm0便携式象素映射
伊斯拉imrasinforeadraswriteras1太阳光栅
tiftiffistifimtifinforeadtifwritetif0标记图像文件格式
使用xwdisxwdimxwdinforeadxwdwritexwd0X Window转储
7评论
图像分析
图像分析 2021年9月21日
如何?tiff,这并不工作:
grayImage = imread (“cameraman.tif”);
grayImage =双(grayImage) +兰德(大小(grayImage));
imwrite (grayImage“_deleteme.tif”);
recalledImage = imread (“_deleteme.tif”);% uint8,不翻倍
和日本,说这对输入图像的文档。
数据类型: int8 | int16 | uint8 | uint16

登录置评。


Guillaume
Guillaume 2016年3月4日
Matlab考虑矩阵的类型建立强度范围对应完全dark-fully白色。
如果类型的双矩阵,然后用matlab使用范围0 - 1代表强度。任何价值高于1被认为是一样的,最大的亮度。因此你的强度1到255都被认为是同一=白色。
然而,如果uint8类型的矩阵,然后用matlab使用范围0 - 255,就像你。所以uint8转换矩阵:
imwrite (uint8 (finalMat)“myImage.jpeg”);
3评论
Devadath您正在
Devadath您正在 2016年3月4日
编辑:Devadath您正在 2016年3月4日
矩阵是不同的,他们的价值观是不同的,尽管图像类似。但我希望的值也一样。在我的例子中,两个 finalMat readIm 是512 * 1024。第一个8 * 8块 finalMat 这些值——
131.087903712260 126.588085931488 129.019131897930 127.986820756743 128.036797886933 128.129163153756 128.901568706468 127.913467179027
126.865651056741 128.644726154519 126.696839938151 129.320745973049 129.064319024373 127.759203600434 128.006382827703 128.032312069063
128.547542279462 128.013326895391 128.389098782354 128.799496025384 128.055922974060 127.763243851185 127.922268272279 128.470671480691
128.028037000488 127.433327438777 127.479136613125 128.980352019314 128.193475727530 128.480245823339 128.413770202099 127.880514709290
129.227871666373 128.063934629160 127.465928877913 128.144312598059 127.757980122585 129.250265336802 128.413391078785 128.787456156361
127.965837250422 126.915520053310 127.628369773152 127.390251727192 127.971102024689 127.836604160943 128.531568211385 127.799176238100
128.197089880864 128.309110329146 128.403008073977 127.913385806887 128.332535509389 127.758264955073 127.422464120998 127.273960679635
128.041637714197 128.369029343605 127.807345577358 127.854815737404 128.197686086408 128.134149584508 128.051525804888 127.880870927027
在您建议的代码后,第一个8 * 8块 readIm 这些值——
128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128
128 128 128 128 128 128 128 128
我想要的 readIm 有相同的价值观 finalMat 。我怎么能这样做呢?

登录置评。


图像分析
图像分析 2022年1月8日
将其保存为一个.mat文件 而不是一个图像格式文件
保存(“我的浮点image.mat”,“模板”);%将模板保存到一个.mat文件。
后来回想的话:
s =负载(“我的浮点image.mat”);% .mat文件中的数据加载到一个结构。
模板= s.myImage;%提取浮点的图像结构。
1评论
费德里科•Fioretti
费德里科•Fioretti 2022年1月8日
我试着更好地解释我的问题是什么。我有一个矩阵noninteger价值观和我必须将这个矩阵保存为一个图像,因为我要用它之后的其他软件。
我写了一个代码,加载一个文件。垫在matlab中,修改它,然后我必须导出这个文件(即非整数矩阵的值)作为一种图像格式文件。你能帮我吗?

登录置评。


Milind帕蒂尔
Milind帕蒂尔 2019年2月10日
兄弟,简单地使用png扩展而不是jpg。
imwrite (finalMat“myImage.png”);
这将给你确切的值确定。
11日评论
沃尔特·罗伯森
沃尔特·罗伯森 2022年1月8日
img = imread (“cameraman.tif”);
一个=重新调节(img);
imwrite (,“file_name.png”);
imshow (img, []);标题(“原始”)
imshow(一个);标题(“新”)

登录置评。


灵阮
灵阮 2021年10月11日
@Milind帕蒂尔 给我你的电子邮件地址,我想问一下关于这个话题。你找到解决方法吗?
8的评论
图像分析
图像分析 2022年1月9日
拯救一个浮点形象TIFF文件,这应该这样做。
%创建浮点图像。
rgbImage =兰德(10年,20年,3);
%的形象必须是单一的精度。
rgbImage =单(rgbImage);
%显示它。
imshow (rgbImage“InitialMagnification”,1000)
轴(“上”,“图像”);
%创建tiff对象。
文件名=“_floatingPointImage.tif”;
tiffObject = Tiff(文件名,' w ')
%设置标签。
tagstruct。ImageLength =大小(rgbImage, 1);
tagstruct。ImageWidth =大小(rgbImage, 2);
tagstruct。压缩= Tiff.Compression.None;
tagstruct。SampleFormat = Tiff.SampleFormat.IEEEFP;
tagstruct。光度= Tiff.Photometric.MinIsBlack;
tagstruct。BitsPerSample = 32;
tagstruct。SamplesPerPixel =大小(rgbImage, 3);
tagstruct。PlanarConfiguration = Tiff.PlanarConfiguration.Chunky;
tiffObject.setTag (tagstruct);
%数组写入磁盘。
tiffObject.write (rgbImage);
tiffObject.close;
%回忆的形象。
m2 = imread(文件名)
%检查,这是我们写的一样。
maxDiff = max (max (m2-rgbImage))

登录置评。

类别

找到更多的在图像类型转换帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!