一段matlab程序,Error using ==> conv2 A and B must be full double matrices.中间部分是Gabor小波变换,不用管.主要是这个double的问题,要怎么改才行?I=imread('J:\lz\after_hist_0000.bmp');sigma=2*pi*pi;if isa(I,'double')~=1 I=dou
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/06 17:59:29
![一段matlab程序,Error using ==> conv2 A and B must be full double matrices.中间部分是Gabor小波变换,不用管.主要是这个double的问题,要怎么改才行?I=imread('J:\lz\after_hist_0000.bmp');sigma=2*pi*pi;if isa(I,'double')~=1 I=dou](/uploads/image/z/11508905-65-5.jpg?t=%E4%B8%80%E6%AE%B5matlab%E7%A8%8B%E5%BA%8F%2CError+using+%3D%3D%3E+conv2+A+and+B+must+be+full+double+matrices.%E4%B8%AD%E9%97%B4%E9%83%A8%E5%88%86%E6%98%AFGabor%E5%B0%8F%E6%B3%A2%E5%8F%98%E6%8D%A2%2C%E4%B8%8D%E7%94%A8%E7%AE%A1.%E4%B8%BB%E8%A6%81%E6%98%AF%E8%BF%99%E4%B8%AAdouble%E7%9A%84%E9%97%AE%E9%A2%98%2C%E8%A6%81%E6%80%8E%E4%B9%88%E6%94%B9%E6%89%8D%E8%A1%8C%3FI%3Dimread%28%27J%3A%5Clz%5Cafter_hist_0000.bmp%27%29%3Bsigma%3D2%2Api%2Api%3Bif+isa%28I%2C%27double%27%29%7E%3D1+I%3Ddou)
一段matlab程序,Error using ==> conv2 A and B must be full double matrices.中间部分是Gabor小波变换,不用管.主要是这个double的问题,要怎么改才行?I=imread('J:\lz\after_hist_0000.bmp');sigma=2*pi*pi;if isa(I,'double')~=1 I=dou
一段matlab程序,Error using ==> conv2 A and B must be full double matrices.
中间部分是Gabor小波变换,不用管.主要是这个double的问题,要怎么改才行?
I=imread('J:\lz\after_hist_0000.bmp');
sigma=2*pi*pi;
if isa(I,'double')~=1
I=double(I);
end
figure(6);
j=1;
for v=0:2
for u=0:5
k=pi*exp(-(v+2)/2*log(2));
q=u*pi/8;
for x=-16:16 %改变x,y的窗口大小,进行效果的比对.
for y=-16:16
tmp1=exp(-(k.*k*(x^2+y^2))/(2*sigma));
tmp2=cos(k*x*cos(q)+k*y*sin(q))-exp(-sigma/2);
tmp3=sin(k*x*cos(q)+k*y*sin(q))-exp(-sigma/2);
realpart(17+x,17+y)=tmp1*tmp2*k^2/sigma;
imagpart(17+x,17+y)=tmp1*tmp3*k^2/sigma;
end
end
imaggabout1=conv2(I,double(imagpart),'full'); realgabout1=conv2(I,double(realpart),'full');
gaborout1=sqrt(imaggabout1.*imaggabout1+realgabout1.*realgabout1);
gaborout1=255-uint8(gaborout1)
subplot(3,6,j),imshow(gaborout1);
j=j+1;
save gaborout.mat gaborout1 ;
end
end
一段matlab程序,Error using ==> conv2 A and B must be full double matrices.中间部分是Gabor小波变换,不用管.主要是这个double的问题,要怎么改才行?I=imread('J:\lz\after_hist_0000.bmp');sigma=2*pi*pi;if isa(I,'double')~=1 I=dou
conv2,是对矩阵求协方差,所以realpart和imagpart必须是矩阵,但你这里没有定义.
可以在for循环前面添加这两个矩阵的定义.
realpart(17+16,17+16) = 0.0;
imagpart(17+16,17+16) = 0.0;
for v=0:2
for u=0:5
k=pi*exp(-(v+2)/2*log(2));
q=u*pi/8;
for x=-16:16 %改变x,y的窗口大小,进行效果的比对.
for y=-16:16
tmp1=exp(-(k.*k*(x^2+y^2))/(2*sigma));
tmp2=cos(k*x*cos(q)+k*y*sin(q))-exp(-sigma/2);
tmp3=sin(k*x*cos(q)+k*y*sin(q))-exp(-sigma/2);
realpart(17+x,17+y)=tmp1*tmp2*k^2/sigma;
imagpart(17+x,17+y)=tmp1*tmp3*k^2/sigma;
end
end