![]() |
MATLAB函数问题
我得到了这个MATLAB函数。当我运行它时,出现以下错误信息。有人可以给我一些提示吗?谢谢。该代码也如下所示。
[INDENT][INDENT] [h,im_matched,theta,I,J] = im_reg_MI('keyframe1.jpg','keyframe2.jpg',0,1)???未定义的函数或变量“ h”。 [/INDENT][/INDENT]==> im_reg_MI处的错误为74 [a,b] = max(h(:));%找到MI的最大值并降低 下面是代码。 [h,im_matched, theta,I,J]=im_reg_MI(image1, image2, angle, step) [m,n]=size(image1); [p,q]=size(image2); [a,b]=size(angle); im1=round(image1); for k=1:b J = rotate_image(angle(k),image2); %rotated cropped IMAGE2 image21=round(J); [m1,n1]=size(image21); for i=1:step:(m1-m) for j=1:step:(n1-n) im2=image21(i:(i+m-1),j:(j+n-1)); % selecting part of IMAGE2 matching the size of IMAHE1 im2=round(im2); h(k,i,j)=MI2(im1,im2); % calculating MI end end end [a, b] = max(h(:));% finding the max of MI and indecises [B]回答:[/B] 问题是您实际上没有为image1和image2参数传递图像数据。您只是传递包含图像文件名'keyframe1.jpg'和'keyframe2.jpg'字符串。 您需要首先使用[URL="http://www.mathworks.com/help/techdoc/ref/imread.html"]IMREAD[/URL]从文件中加载图像数据,然后将图像数据传递给im_reg_MI 。假设图像在当前工作目录中,则应执行以下操作: image1 = imread('keyframe1.jpg'); image2 = imread('keyframe2.jpg'); [h,im_matched,theta,I,J] = im_reg_MI(image1,image2,0,1); [B]编辑:[/B] 似乎有内的附加误差im_reg_MI发生如果image21 (的旋转版本image2 )具有相同的尺寸或小于image1用于一个或多个它的尺寸。如果m1小于或等于m和/或n1小于或等于n ,则从1:step:(m1-m)和/或1:step:(n1-n)将永远不会输入i或j一个或两个循环。 1:step:(n1-n)将[URL="http://www.mathworks.com/help/techdoc/ref/colon.html"]创建一个空向量[/URL] 。因此,内部循环代码将永远不会运行, h也不会创建。 [B]还有一点注意...[/B] 我注意到,函数im_reg_MI似乎im_reg_MI两个图像视为2-D,这意味着它们必须是[URL="http://www.mathworks.com/help/techdoc/creating_plots/f2-10709.html#f2-175"]强度图像[/URL] (即灰度或二进制图像数据)。如果您要处理[URL="http://www.mathworks.com/help/techdoc/creating_plots/f2-10709.html#f2-155"]索引[/URL]或[URL="http://www.mathworks.com/help/techdoc/creating_plots/f2-10709.html#f2-12468"]RGB[/URL]图像数据,我认为im_reg_MI无法正确处理它们。 [url=https://stackoverflow.com/questions/4543468]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 01:13。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.