Matlab建模图像形成算法的实现

Matlab建模图像形成算法的实现,matlab,image-processing,Matlab,Image Processing,我正在尝试用matlab实现一个算法 算法(或阶段)如下所示: (1) 选择一种光源 (2) 计算该光源下所有24个反射的颜色信号 (3) 将每个传感器响应向量(列或R(参见变量))逐元素乘以颜色信号 (4) 对所有波长的结果求和(这将给我留下72个值:24个R值(每个表面一个)、24个G值和24个B值) (5) 通过指定一个100x100像素的正方形,根据计算出的每个反射率的传感器响应创建一个图像,并创建一个4行6行的图案 列(像一个数组) 我想我在第4阶段会感到困惑(但我之前可能实现错误

我正在尝试用matlab实现一个算法

算法(或阶段)如下所示:

  • (1) 选择一种光源
  • (2) 计算该光源下所有24个反射的颜色信号
  • (3) 将每个传感器响应向量(列或R(参见变量))逐元素乘以颜色信号
  • (4) 对所有波长的结果求和(这将给我留下72个值:24个R值(每个表面一个)、24个G值和24个B值)
  • (5) 通过指定一个100x100像素的正方形,根据计算出的每个反射率的传感器响应创建一个图像,并创建一个4行6行的图案 列(像一个数组)
我想我在第4阶段会感到困惑(但我之前可能实现错误)

以下是我的变量:

   A   %an illuminance vector of size 31x1.
   R   %colour camera sensitivities of size 31x3. (the columns of this matrix are the red, green, and blue sensor response functions of a camera).
   S   %surface reflectances (24) of size 31x24 from a Macbeth ColourChecker (each column is a different reflectance function.
   WAV %Reference wavelength values of size 31x1.
这就是我所实现的:

(1) 选择一个(因为这是我做的唯一一个)

(2) 计算所有24个反射的颜色信号

  cSig_1A  = S(:,1).*A;
  cSig_2A  = S(:,2).*A;
         .
         .              %all 24 columns of S
         .
  cSig_24A = S(:,24).*A;
(3) 将传感器响应向量(R列(RGB))乘以颜色信号:

  % R.*reflectances     G.*reflectances     B.*reflectances     
  a1=R(:,1).*cSig_1A;  a12=R(:,2).*cSig_1A;  a13=R(:,3).* cSig_1A;
  b1=R(:,1).*cSig_2A;  b12=R(:,2).*cSig_2A;  b13=R(:,3).* cSig_2A;
         .
         .              %all 24 signals (think this is correct)
         .
  x1=R(:,1).*cSig_24A; x12=R(:,2).*cSig_24A; x13=R(:,3).*cSig_24A;
假设我前面的步骤都做对了,我不确定如何将波长上的结果相加,只剩下72个值?然后从中创建一个图像


也许措辞让我困惑,但如果你们能给我一些指导,那就太好了。非常感谢。提前谢谢。

我认为您的步骤2的代码是错误的。。。你说的是S的所有24列,但你只索引了第一列。此外,在步骤3中,您将获得72个值
(a1、a12、a13)->3个值*(cSig_1A,…,cSig_24A)=3*24=72
。如果你把这个加在cetain变量上(在你的例子中,波长,我不知道它是什么),这些值不是从72减少了吗?你的意思是不是要代替72?在步骤2中键入Oops。很抱歉。更正。是的,在步骤3中,我目前有72个值。。。但我不知道求和意味着什么,这就是我感到困惑的地方。波长只是一个向量400:700,它代表了我认为在我们的视觉中颜色的波长。你认为我应该把所有的RGB加起来(a1+a12+a13)吗?谢谢你的发帖。你说过,参考波长是
31x1
?现在你提到它是一个从400到700的向量,这就是301x1。你能解释一下吗?好的。谢谢你,帕拉格,我会试一试的。谢谢你的时间和耐心。如果成功,我会发回:D
  % R.*reflectances     G.*reflectances     B.*reflectances     
  a1=R(:,1).*cSig_1A;  a12=R(:,2).*cSig_1A;  a13=R(:,3).* cSig_1A;
  b1=R(:,1).*cSig_2A;  b12=R(:,2).*cSig_2A;  b13=R(:,3).* cSig_2A;
         .
         .              %all 24 signals (think this is correct)
         .
  x1=R(:,1).*cSig_24A; x12=R(:,2).*cSig_24A; x13=R(:,3).*cSig_24A;