在图像文件上叠加数据与网格线对齐

时间:2014-10-31 05:27:40

标签: image matlab alignment overlay axis

我的目标是在MATLAB中绘制一个图像文件,并将其与图像中的刻度线对齐,然后叠加数据点。图像文件是从pdf报告(下面的链接)中捕获的屏幕。数据是loglog。图像文件轴具有下限和上限。

xstart 1e-2 to xend 1e5 % frequency and 
ystart 1e-7 yo yend 1e-1 % amplitude

我想在图像上绘制以下数据值

frequency = [1 3 10 30 100 300 1000 3000 10000]; 
amplitude = [7e-3 8e-4 1.3e-4 4e-5 2e-5 1.8e-5 1.7e-5 1.65e-5 1.6e-5];

(或者我从计算得到的任何矢量值,例如矢量“B”作为频率矢量“f”的函数)

我遇到的问题是.pdf图像有网格线。结果是错误的数据点并使轴标签看起来不美观。谢谢

image file

我认为最好将日志标记尽可能与图像文件对齐。以下是我的代码。我还没有弄清楚如何准确地将刻度轴与图像对齐(当放大时),(我确定你可以手动完成这个,但是如果有一个优雅的图像处理数学方法会很好)。 / p>

imgInputlf = imread('RMIT_Input_Noise_Lowf.png');
[nrows,ncols,dim]=size(imgInputlf);
figure(1)
f = logspace(-2,5,ncols);
amp=logspace(-7,-1,nrows);
xrng=[min(f) max(f)];yrng=[min(amp) max(amp)];
imagesc(xrng,yrng,imgInputlf)
ax1=gca;
set(ax1,'YTickLabel', [], 'XTickLabel', []) % remove pixel ticklabels
set(findobj(gcf, 'type','axes'), 'Visible','off')

Freq = [1 3 10 30 100 300 1000 3000 10000]; % data
Amp = [7e-3 8e-4 1.3e-4 4e-5  2e-5  1.8e-5 1.7e-5  1.65e-5  1.6e-5]; %data

ax2 = axes('Position',get(ax1,'Position'),'Color','none','YScale', 'log','XScale','log');    %color=none to make the image visible
ylim(yrng)
xlim(xrng)
hold on
loglog(Freq,Amp,'k','LineWidth',4) % plot data  end    

0 个答案:

没有答案