Image 将BMP图像转换为[-1,1]上的灰度矩阵的倍频程函数

Image 将BMP图像转换为[-1,1]上的灰度矩阵的倍频程函数,image,matlab,octave,Image,Matlab,Octave,对于大学作业,我们得到了一个MATLAB/Octave工具箱。这包括以下函数,理论上,该函数应读取BMP文件并将其转换为矩阵,所有值均位于[-1,1],其中-1表示白色,1表示黑色 function In=loadCNN(filename) Img=double(imread(filename)); if size(Img,3)==3 Img=(Img(:,:,1)+Img(:,:,2)+Img(:,:,3))/3; end In=((double(Img)/1

对于大学作业,我们得到了一个MATLAB/Octave工具箱。这包括以下函数,理论上,该函数应读取BMP文件并将其转换为矩阵,所有值均位于[-1,1],其中-1表示白色,1表示黑色

function In=loadCNN(filename)
  Img=double(imread(filename));
  if size(Img,3)==3
    Img=(Img(:,:,1)+Img(:,:,2)+Img(:,:,3))/3;
  end     
  In=((double(Img)/127.5)-1)*-1;
end
但是,它不能正常工作,返回一个矩阵,例如,白色像素为0.99216


请帮我写一个函数来做这个。它也应该适用于彩色bmp,在那里它应该首先转换为灰度。

我认为这应该适用于所有bmp图像

function In=loadCNN(filename)
    Img=double(imread(filename));
    if size(Img,3)==3
        Img=mean(Img,3)/255;
    end
    In=2*Img-1
end

您确定此代码在MATLAB和GNU倍频程中的行为不同吗?在进行任何缩放之前,您需要检查
Img
的缩放比例。@juliohm不确定。我没有MATLAB。一个朋友在MATLAB中为我试用过,他说它在MATLAB中也不起作用。然后你应该从你的问题中删除文本“…在八度音阶上它不起作用…”。