如何拯救光谱(stft级)RGB图像,恢复它到底是什么?

24日视图(30天)
我使用短时傅里叶变换),然后保存stft的RGB图像的大小,但是当我读一遍它的不同 小的时候, 的代码如下:
s = stft (y, Fs,“窗口”、风能、“OverlapLength”克拉,“FFTLength”,nfft);% y是一维信号
smag = abs (s);%得到stft的大小
smag =重新调节(smag);%缩放它在0到1之间
mIm = im2uint8 (smag);把它转换成uint8 %
mImRGB = ind2rgb (mIm, jet (128));%将它转换成colorheat相似光谱显示了matlab(不完全)
imwrite (mImRGB“路径\ smagg.png”);%将其保存为PNG图像
smag22 = imread (“路径\ smagg.png”);%读一遍
smag22 = rgb2ind (smag22, jet (128));知识:相似,mIm是%转换
相似度=总和(sum (abs (smag22-mIm)));%结果不是零意味着其大小(stft)不是完全恢复!restorted频谱失真数据的频谱
有解决方案吗?

答案(1)

Elady
Elady 2021年7月1日
编辑:Elady 2021年7月1日
你好,
有两个潜在的罪犯,可以解释你看到的区别。
  1. 从线性指数转换RGB彩色空间
  2. 保存/加载使用图形图像文件格式。
我开始怀疑1(从RGB转换/)绕过文件保存/加载。
> > mImRGB = ind2rgb (mIm, jet (128));%将它转换成colorheat相似光谱显示了matlab(不完全)
> > smag22 = rgb2ind (mImRGB, jet (128));%转换回来
> >相似=总和(sum (abs (smag22-mIm)))%是什么结果呢?
如果相似度是0,那么问题是与RGB映射。记住,rgb2ind不是一个简单的映射(RGB) - >线性指数,因为它可以引入空间如抖动量化影响工件。它是视觉数据的优化。你可能会消除一些通过使用粗colormap(例如飞机(64)),但你也会失去动态范围。
如果你能放弃彩色化过程和保存一个单色图像,它可能完全消除这个问题。
你也可以检查图像之间的区别 假正经的 smag22 ,的最大标准不同。
> >显示亮度图像(mIm-smag22)
> > max (abs (smag22-mIm), [],“所有”)
它可能是一个小的差别1像素阴影值,由决定是否它很重要。
最后,作为一般规则,图形图像格式并不意味着被用作精确数值存储容器,而是优化的可视化表示。你应该确保你选择的格式不是损耗(我。e介绍压缩)。你可以保存您的STFT作为可视化的图形图像只有目的。对于一个真正的精确存储的话,我会选择使用垫或任何其他二进制文件
问候,
兰德

标签

s manbetx 845


释放

R2020a

社区寻宝

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

开始狩猎!