我正在尝试执行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
我是否必须重新制作八度?
提前致谢
答案 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之间。