有关彩色图象直方图的问题
经常看到有这样的说法:求彩色图象的4*4*4直方图, 在这里的4*4*4直方图, 请问应该理解?
如何通过编码实现? 谢谢
我是用matlab 实现的, 不过运行时间有点长, 那位大虾有优化点的程序啊
希望中。。。。。。。。。。。。。
[ 本帖最后由 ChaChing 于 2010-6-29 00:19 编辑 ] 这个没办法,都是通过循环实现的,效率必然低
其实直方图本来就是对单通道图像的.
im=imread('file.jpg');
figure,imhist(im(1,:));
figure,imhist(im(1,:));
figure,imhist(im(1,:));
或者转为灰度再显示:
gray=rgb2gray(im);
figure,imhist(gray); 不是 三色原理 来构成彩色图象的吗?要则呢们来个4*4*4呢?你可以把原程序发上来,让我观摩观摩不 下面的是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 编辑 ] 我也用matlab处理过光力学图像,感觉确实比较慢,程序得运行一天。期待高手的优化方案!!
页:
[1]