寻找从绘图图中提取数据的MATLAB脚本(这里来自协方差矩阵或马尔可夫链的2D轮廓)并再现原始数字

43次观点(过去30天)
小便
小便 于2021年6月4日21:25
回答: 小便于2021年6月12日18:28
我正在寻找一个能够例如从下面的2D轮廓绘图中提取数据的脚本:
由此,我尝试用下面的脚本在Matlab中应用这个方法 邮政
%//导入数据:
imdata = importdata ('omega_l_omega_m.png');
灰色= rgb2gray (imdata.cdata);
colorlim = [-1 1];%//应该手动设置
%//获取数据区域:
f =图(“位置”,得到(0,'屏幕尺寸'));
imshow (imdata.cdata“父”,轴(“父”,F),'InitialMagnification''合身');
%//获取数据区域:
标题('点击* data *'的最左上角的十字架上
da_tp_lft = round(getPosition(invout));
标题(点击*data*最右下方区域的叉号
da_btm_rgt = round(getPosition(invout));
dat_area = double(灰色(da_tp_lft(2):da_btm_rgt(2),da_tp_lft(1):da_btm_rgt(1)));
%//获取颜色栏的区域:
标题('点击*颜色栏中的最多颜色内的十字架
ca_tp_lft = round(getPosition(invout));
标题('单击*颜色贝尔*'的最多颜色的底部底部
ca_btm_rgt = round(getPosition(invout));
cmap_area =双(灰色(ca_tp_lft (2): ca_btm_rgt (2), ca_tp_lft (1): ca_btm_rgt (1)));
关闭(f)
%//将colormap转换为data:
数据= dat_area. / max (cmap_area(:))。*范围(colorLim) abs (min (colorLim));
似乎我得到了数据" 数据” 数组,但我不知道如何利用它来从这些数据重现原始图形。
有人能看到如何用Matlab绘制这种图与我通常提取的数据(不确定Matlab。脚本生成了绿色、橙色和蓝色轮廓的所有数据,每个置信水平,即68%、95%、99.7%)?
欢迎任何帮助,以通过提取的值重现此数字。
提前致谢

接受答案

约瑟夫成
约瑟夫成 在2021年6月9日15:50
编辑:约瑟夫成 在2021年6月9日15:50
您的图表有点杂乱,文字和线条表示项目。这是一个可以推动您的快速示例。它需要很多工作来填补文本和虚线边界线创建的孔,但这是一个开始。
CLC.
清晰的所有;
imdata = imread ('//www.tianjin-qmedu.com/matlabcentral/answers/uploaded_files/642495/image.png');
关闭所有;
灰色= rgb2gray (imdata);
YAX = SUM(CONC2(单(灰色),[ - 1 -1 -1; 0 0 0; 1 1 1],“有效”),2);
xax = sum(conv2(单(灰色),[ - 1 -1 -1; 0 0 0; 1 1 1]',“有效”), 1);
图(1)中,次要情节(211),故事情节(xax),次要情节(212),故事情节(yax)
ROIy =找到(abs (yax) > 1 e5);
Roiyinner =查找(差异(Roiy)> 5);
ROIybounds = ROIy([ROIyinner ROIyinner+1]);
Roix = find(abs(xax)> 1e5);
Roixinner =查找(Diff(Roix)> 5);
ROIxbounds = ROIx([ROIxinner ROIxinner+1]);
PLTREGION =灰色(ROIYBOUNDS(1):ROIYBOUNDS(2),ROIXBOUNDS(1):ROIXBOUNDS(2));
PLTREGION(PLTREGION == 255)= NAN;
图(2),ImageC(PLTREGION)
[n x] = hist(单(pltregion(:)),0:255);
图(3)中,情节(X, N),集(gca),'yscale''日志'
pltitems = find(n> 2000)% %限制“颜色”感兴趣的项目与>1000像素
pltitems = 1×10
167 90 101 129 132 144 167 180 194
pltvalues = x(pltitems);
pltvalues(1)= [];%忽视黑人?
%测试出区域1
为了IND = 1:NUMER(PLTVALUES)
temp = 0(大小(PLTregion));
temp(plregion ==PLTvalues(ind) | (plregion <=50 & plregion >10))=255;
图(100)%,显示亮度图像(临时)
temp = bwareaopen(temp,1000);
temp = imfill(临时“黑洞”);
图(100),子图(3,3,IND),ImageSC(TEMP)
图(101),次要情节(3,3,印第安纳州),显示亮度图像(单(PLTregion)。* temp, 255年[0])
结尾

更多答案(1)

小便
小便 于2021年6月12日18:28
谢谢你详细的回答。我意识到要从这个图像中提取协方差矩阵还有很多工作要做。
你建议我在这个分析中深入了哪个轨道?
偶然,您知道外部工具是否可以轻松执行此提取?也许文件交换论坛中的类似功能已完成?
此致

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!