playtree 发表于 2006-9-26 14:03

有关彩色图象直方图的问题

经常看到有这样的说法:
求彩色图象的4*4*4直方图, 在这里的4*4*4直方图, 请问应该理解?
如何通过编码实现? 谢谢

我是用matlab 实现的, 不过运行时间有点长, 那位大虾有优化点的程序啊
希望中。。。。。。。。。。。。。

[ 本帖最后由 ChaChing 于 2010-6-29 00:19 编辑 ]

happy 发表于 2006-10-26 11:19

这个没办法,都是通过循环实现的,效率必然低

其实直方图本来就是对单通道图像的.
im=imread('file.jpg');
figure,imhist(im(1,:));
figure,imhist(im(1,:));
figure,imhist(im(1,:));

或者转为灰度再显示:
gray=rgb2gray(im);
figure,imhist(gray);

q214468952 发表于 2006-10-27 20:47

不是 三色原理 来构成彩色图象的吗?要则呢们来个4*4*4呢?你可以把原程序发上来,让我观摩观摩不

playtree 发表于 2006-11-1 08:56

下面的是8*8*8的hsv的彩色直方图matlab编码
im=imread('F:\code\optical flow\stereoflow\car0.png');
r=size(im,1); c=size(im,2); d=size(im,3); x=8; y=8; z=8;
im=rgb2hsv(im); xyz_s(1)=1/x; xyz_s(2)=1/y; xyz_s(3)=1/z;

im=reshape(im,r*c*d,1);
for i=1:3
    im(r*c*(i-1)+1:r*c*i,1)=fix(im(r*c*(i-1)+1:r*c*i,1)/xyz_s(i));
end
for j=1:r*c*d
    if im(j,1)==8,im(j,1)=7; end
end
hsv=zeros(512);
for i=0:x-1, for j=0:y-1, for k=0:z-1
            h=im(1:r*c,1)==i; s=im(r*c+1:r*c*2,1)==j;
            v=im(r*c*2+1:r*c*3,1)==k;
            hsv(i*64+j*8+k+1)=size(find(h&s&v),1);
end; end; end

上面的程序运行需要12-13秒
希望高手指点如何优化程序
以减少运行的时间
谢谢

[ 本帖最后由 ChaChing 于 2010-6-29 00:25 编辑 ]

yaolonghe 发表于 2006-11-8 00:33

我也用matlab处理过光力学图像,感觉确实比较慢,程序得运行一天。期待高手的优化方案!!
页: [1]
查看完整版本: 有关彩色图象直方图的问题