bainhome 发表于 2006-8-31 23:02

拿尺子量也没必要,说一个偏方:
1.
>> =imread('yourfig.jpg');
imshow(X)
2.
图形工具栏里有一个data cursor工具,点击之,右键,将数据display方式改为在window内部显示
3.找到你要的基准点的坐标,右键,输出到workspace,输出时可以选择变量名称。其它所有点相同,鼠标悬停在已经点中的数据点会出现双十字行cursor,移动可以微调,如果还嫌精度不够,可以局部放大图形再选。
4.对已有坐标数据做坐标变换,注意,如果没有记错的话,此时是象素单位应当是pixel,转换为正常单位应当就可以,如何转换我忘记具体数据了。
可能会有一定的误差,不过也比尺子稍强一些^_^
这个问题直接做出精确解难度很大,甚至不可能,因为红色十字点不再代表一个数据点,而是多个象素点堆叠在一起。选哪个象素点不选哪个,难以编程实现。个人认为除了ginput之外,这个方法也不失为一个选择,至少可以连颜色矩阵的数值同样也显示出来,另外它比ginput要精确得多:一方面放大图像和点取数据可以交互,另一方面也是最重要的一点,你点取一个数据点不满意的时候,可以用键盘的光标键左右上下精准移动。hoho...
好像有一个软件可以实现这个功能,好像叫个什么digits...什么的,忘了。
BTW:几个论坛还没见谁这么玩儿过data cursor,应当是我首创,大概是这三天内我最觉满意的一个思路,其实也是没有其它妙法而逼出来的无奈之举...-_-|||

[ 本帖最后由 bainhome 于 2006-8-31 23:28 编辑 ]

realhappy 发表于 2006-9-1 14:33

bainhome的见解很有特色啊。

happy 发表于 2006-9-1 17:05

这个还是可以找出来的,简单做了一下,下面的代码还不完善,如果要做到通用还需要大量的修改,另外代码也需要进行优化,不过还是基本能实现你这个问题的

clc;
clear;
a=imread('a.jpg');
a(a<150)=0;
a(a>150)=255;
=size(a);
blkx=[];
blky=[];
for i=1:L;
        if sum(a(i,fix(M/3):fix(2*M/3),2))<10;
      blky=;
    end   
end
for j=1:M;
        if sum(a(fix(L/3):fix(2*L/3),j,2))<10;
      blkx=;
    end
    for i=1:L
      if a(i,j,1)~=255 | a(i,j,2)~=0 | a(i,j,3)~=0
            a(i,j,:)=255;
      end
    end
end
b=rgb2gray(a);
b(b~=255)=0;
imshow(b)
for i=1:40
    dx=(max(blkx)-min(blkx))/40;
    xi(i)=fix(dx*i+min(blkx));
    yi(i)=mean(find(b(:,xi(i))==0));
    y(i)=1.5-1.5*(yi(i)-min(blky))/(max(blky)-min(blky));
end

其中y就是你需要输出的结果

y =

Columns 1 through 7

    0.7440    0.6720    0.5160    0.6460    0.9240    1.0680    1.0740

Columns 8 through 14

    1.0560    1.1760    1.1400    1.2840    1.3080    1.0260    0.9120

Columns 15 through 21

    0.9480    0.6600    0.6840    0.7920    0.6180    0.7575    1.0380

Columns 22 through 28

    0.9780    0.8820    1.0380    1.1280    1.2000    1.2420    1.1520

Columns 29 through 35

       NaN    1.1467    0.8860    0.8760    0.7152    0.6480    0.3915

Columns 36 through 40

    0.9660    0.9024    0.8400       NaN    1.1880

说明一点这里有两个结果出现了NAN,这是由于在你的图片中那个标签挡住了两个点的原因!

realhappy 发表于 2006-9-1 18:01

happy真是高人啊,非常感谢!

chbo76 发表于 2007-6-13 16:46

不错啊,受教了。:lol
页: 1 [2]
查看完整版本: 如何把图中曲线的坐标点找出来?