【发布时间】:2015-07-11 11:28:06
【问题描述】:
RGB 和 Parula 之间没有双射,讨论了 here。 我在想如何在 Parula 中做好文件的图像处理。 这个挑战是从这个thread 发展而来的,关于通过将案例扩展到 Parula 颜色的一般问题来从 ECG 图像中去除黑色。
数据:
由
生成[X,Y,Z] = peaks(25);
imgParula = surf(X,Y,Z);
view(2);
axis off;
在您的解决方案中使用此代码来读取第二张图像不是该线程的重点。
代码:
[imgParula, map, alpha] = imread('http://i.stack.imgur.com/tVMO2.png');
其中map 是[],alpha 是全白图像。做imshow(imgParula)给了
您会看到很多干扰和分辨率损失,因为 Matlab 将图像读取为 RGB,尽管实际的颜色图是 Parula。
调整此图片的大小不会提高分辨率。
如何在 Matlab 中将图像读入相应的颜色图? 我没有找到任何参数来指定阅读时的颜色图。
【问题讨论】:
-
好的。如果您不知道
caxis的设置是什么(即颜色图的范围),则存在不确定性。例如,蓝色可以是任何值,具体取决于此设置...例如,解决方案将为您提供一个介于 0 和 1 之间的数组,这可能不是初始数据范围。 -
图像文件不是用来表示任意数据,而是图形,它可能代表也可能不代表数据。如果要存储在 Matlab 中生成的数据,请使用 mat 文件或其他二进制或基于文本的文件格式。
-
我想我知道该怎么做,如果中间没有发布解决方案,我会在几个小时内/明天回家时尝试解决方案。
-
我认为可以通过以下方式完成:将黑色线条转换为白色,在非白色像素上应用 regionprops,使用重心将区域映射到规则网格上,最后,平均区域上的颜色,并通过查看最接近的颜色将其映射到 parula 颜色图。不幸的是,第一步在很大程度上取决于初始图像的生成方式(格式、分辨率),以及黑色网格并非完全黑色的事实。
-
@Ratbert:请参阅下面的尝试。我不确定我是否涵盖了问题的各个方面——至少正如你所详述的那样——但我确实实施了一个解决方案来找到“最接近”的颜色。
标签: image matlab image-processing resolution