如何拯救一个矩阵作为图像吗?
584(30天)
显示旧的评论
我有一个矩阵
finalMat
的数据类型
双
值在0到255的范围。它实际上对应于一些形象。我显示如下:
imshow (finalMat []);
但是当我试图挽救它使用下面的代码,保存的图像是完全白色的。
imwrite (finalMat“myImage.jpeg”,“JPEG”);
我想保存磁盘上的形象没有改变中的值
finalMat
矩阵。当我读即保存的图像
myImage.jpeg
,我必须得到相同的值
finalMat
。有人能帮助节省图像吗?提前谢谢你. .
接受的答案
图像分析
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
2016年3月4日
Matlab考虑矩阵的类型建立强度范围对应完全dark-fully白色。
如果类型的双矩阵,然后用matlab使用范围0 - 1代表强度。任何价值高于1被认为是一样的,最大的亮度。因此你的强度1到255都被认为是同一=白色。
然而,如果uint8类型的矩阵,然后用matlab使用范围0 - 255,就像你。所以uint8转换矩阵:
imwrite (uint8 (finalMat)“myImage.jpeg”);
图像分析
2022年1月8日
将其保存为一个.mat文件
而不是一个图像格式文件
保存(“我的浮点image.mat”,“模板”);%将模板保存到一个.mat文件。
后来回想的话:
s =负载(“我的浮点image.mat”);% .mat文件中的数据加载到一个结构。
模板= s.myImage;%提取浮点的图像结构。
1评论
费德里科•Fioretti
2022年1月8日
我试着更好地解释我的问题是什么。我有一个矩阵noninteger价值观和我必须将这个矩阵保存为一个图像,因为我要用它之后的其他软件。
我写了一个代码,加载一个文件。垫在matlab中,修改它,然后我必须导出这个文件(即非整数矩阵的值)作为一种图像格式文件。你能帮我吗?
灵阮
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))