2.求图像竖直边缘,水平边缘,边缘强度,边缘斜率。
3.将图像每16*16(取其他也可以)个像素分到一个cell中。对于256*256的lena来说,就分成了16*16个cell了。
4.对于每个cell求其梯度方向直方图。通常取9(取其他也可以)个方向(特征),也就是每360/9=40度分到一个方向,方向大小按像素边缘强度加权。最后归一化直方图。
5.每2*2(取其他也可以)个cell合成一个block,所以这里就有(16-1)*(16-1)=225个block。
6.所以每个block中都有2*2*9个特征,一共有225个block,所以总的特征有225*36个。
当然一般HOG特征都不是对整幅图像取的,而是对图像中的一个滑动窗口取的。
I = imread('cameraman.tif')tform = maketform('affine',[1 0 0.5 1 00 0 1])J = imtransform(I,tform)imshow(I), figure, imshow(J)追问: 谢谢,有劳了,可是我们老师要求的是将图像映射到一个圆柱体和球体上,并让圆柱体和球体旋转啊。
function kcsj3
clear,clc,clf
[x,y,z]=cylinder
ff=input('请输入要映射到圆柱体上的图片的路径(用''括住)')
I=imread(ff)
z=-z
subplot(121),warp(x,y,z,I)
grid off
axis off
[az,el]=view
view(az+180,el)
for m=1:5:360
view(az-m,10),pause(0.1)
end
%clear,clc,clf
[x,y,z]=sphere(100)
%QQ=input('请输入要映射到球体上图片的路径(用''括住)')
K=imread(ff)
z=-z
subplot(122),warp(x,y,z,K)
grid off
axis off
axis square
[az,el]=view
for n=1:5:360
view(az+n,10),pause(0.1)
end
这个程序不能让圆柱跟球体一起转
麻烦您看看应该怎么修改好么?
回答: 你的问题比较有意思,做个测试,希望有所帮助。
代码
clear allclose allclc
[x1, y1, z1] = cylinder(0.3)
file = 'lena.jpg'
I1 = imread(file)
z1 = -z1
subplot(1, 2, 1)warp(x1, y1, z1, I1)
axis off
axis equal
[x2, y2, z2] = sphere(100)
I2 = imread(file)
z2 = -z2
subplot(1, 2, 2)warp(x2, y2, z2, I2)
axis off
axis equal
[az, el] = view
for n = 1 : 5 : 360
subplot(1, 2, 1)
view(az+n, 10)
subplot(1, 2, 2)
view(az+n, 10)
pause(0.1)
end
结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)