在Octave中显示图像的像素值?

Ala*_*air 7 plot image octave pixels

例如,如果我加载并显示图像

c = imread('cameraman.tif');
imshow(c)
Run Code Online (Sandbox Code Playgroud)

然后在绘图窗口中,在图像本身下,有两个数字表示当前光标位置的形式

[39.25, 120.6]
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 是否可以调整显示以使位置为整数?那么每个屏幕像素一个像素?
  2. 此信息是否可以包含像素的灰度/ rgb值,例如

    [23, 46] = 127

    要么

    [23, 46] = (46,128,210)

我试过摆弄"轴"命令,但我找不到任何有用的东西.

我想我想要的是类似Matlab的"像素信息工具" impixelinfo:http: //www.mathworks.com.au/help/images/ref/impixelinfo.html虽然我知道来自octave图像wiki的http:// wiki .octave.org/Image_packageimpixelinfo不是在目前八音实施.但也许有另一种方法可以达到相同的效果?

我在linux(Ubuntu 12.04)下使用Octave-3.8.0,图像包2.2.0.

And*_*ndy 5

GNU Octave 3.8使用FLTK作为标准的graphics_toolkit.不幸的是,只有在鼠标移动(拖动)时使用此工具包按下按钮才触发WindowButtonMotionFcn(今天我将此视为一个错误).但是你可以使用WindowButtonDownFcn.

如果单击图像,此示例将使用该位置的位置和图像值更新标题:

img = imread ("cameraman.png");
imshow (img)

function btn_down (obj, evt)
  cp = get (gca, 'CurrentPoint');
  x = round (cp(1, 1));
  y = round (cp(1, 2));
  img = get (findobj (gca, "type", "image"), "cdata");
  img_v = NA;
  if (x > 0 && y > 0 && x <= columns (img) && y <= rows (img))
    img_v = squeeze (img(y, x, :));
  endif

  if (numel (img_v) == 3) # rgb image
    title(gca, sprintf ("(%i, %i) = %i, %i, %i", x, y, img_v(1), img_v(2), img_v(3)));
  elseif (numel (img_v) == 1) # gray image
    title(gca, sprintf ("(%i, %i) = %i", x, y, img_v));
  endif
endfunction

set (gcf, 'WindowButtonDownFcn', @btn_down);
Run Code Online (Sandbox Code Playgroud)

如果需要,您还可以在光标旁边放置文本.