" Submatrix错误定义"当试图减少灰度图像的颜色深度时

时间:2016-05-24 17:51:29

标签: image matrix scilab submatrix

我试图让Scilab接收某个JPEG图像,然后将其转换为0到255之间的值矩阵(正常的8位深度图像),然后将这些值重新排列为更小的深度。该提议是将所有选项从1位到7位分别转换为2,4,8,16,32,64和128种不同的颜色级别。

我们正在使用灰度图像来简化操作,因为我们可以简单地获取3个通道中的任何一个并将其作为行和列的矩阵使用。我知道有很多更好的方法可以做到这一点,但我需要使用Scilab,因为它适用于大学的图像处理课程(信号和线性系统主题来自电气工程)。

我能想到的是,它对我试过的测试矩阵运行良好,是:

function y=bits(x,p)
    [rows, columns]=size(x);
    y=zeros(rows,columns);
    aux=round(linspace(0,255,2^p));  //define which values the output can have  
   for i=1:rows                     //varies rows
        for j=1:columns               //varies columns
        [aux2,minpos]=min(abs(aux-x(i,j)));//calculates the closest value between the input and the possible output values
        y(i,j)=aux(minpos); //get the calculated closest value and puts it at the output
    end
  end  
endfunction

我能理解的是,为什么它适用于任何手工制作的矩阵,但是当我尝试发送更大的东西(我的意思是,更多的行和列)时,它会错误地给出" Submatrix定义&#34。第8行的错误是" Y(I,J)= AUX(minpos);"线。

编辑:只是添加,我使用" imread"导入图像,这是SIVP的功能。

感谢任何帮助,提前感谢=)

1 个答案:

答案 0 :(得分:0)

我可以在函数开头用以下内容修复它:

x=x(:,:,1);
x=double(x);

=)。