Octave IMAGE包无法将图像转换为灰度

时间:2014-12-09 12:02:11

标签: image octave graphicsmagick

我正在尝试执行VLFeat.org教程:http://www.vlfeat.org/overview/sift.html,以了解SIFT功能。我用八度音来做。我的八度版本是GNU Octave, version 3.8.2,我在mac上是10.9.5,当我列出pakages:

octave:4>pkg list
 Package Name  | Version | Installation directory
--------------+---------+-----------------------
 control *|   2.6.6 | /Users/javier/octave/control-2.6.6
 general *|   1.3.4 | /Users/javier/octave/general-1.3.4
   image *|   2.2.2 | /Users/javier/octave/image-2.2.2
  signal *|   1.3.0 | /Users/javier/octave/signal-1.3.0

所有包都加载了。我正在使用的VLFeat版本:

octave:5>vl_version
0.9.19

我输入

I = vl_impattern('roofs1') ;
warning: your version of GraphicsMagick limits images to 8 bits per pixel
image(I) ;

有时候我会收到警告,有时候却没有。然后我使用以下方法将图像转换为灰度图像:

I = single(rgb2gray(I)) ;

我获得了一张全蓝色的图像,除了均匀的深蓝色图像外,我看不到任何东西。没有错误消息或任何其他警告,只是一个蓝色图像。我尝试了一些事情:其他图像,在图像包中使用imread加载,似乎没有任何效果(当我使用imread时,我得到类似于热图的内容,但仍然不是灰度图像) 。我想这可能与警告有关:

warning: your version of GraphicsMagick limits images to 8 bits per pixel

我所有的八度音程安装都是用macports完成的。所以,我想问题是。我是否必须再次安装GraphicsMagick。如果是这样,使用macports,是吗:

 sudo port install GraphicsMagick --with-quantum-depth=16

我是否必须重新制作八度?

提前致谢

1 个答案:

答案 0 :(得分:1)

你不能这样做

I = single(rgb2gray(I)) ;

单一类图像的显示范围与uint8不同。使用im2single

imshow (im2single (rgb2gray (I))

或设置imshow的显示范围:

imshow (single (rgb2gray (I)), [0 255])
imshow (single (rgb2gray (I)), [])

请参阅octave manual

  

灰度或RGB图像中像素值的实际含义取决于矩阵的类别。如果矩阵属于类,则双像素强度介于0和1之间,如果属于类uint8,则强度介于0和255之间,如果属于类uint16,则强度介于0和65535之间。