发明名称 应用于CMOS图像传感器的新型实时插补方法
摘要 本发明涉及数字图像处理领域。为在算法复杂度不高的基础上,对像素边缘和通道相关度的判断更为精确,能得到更好的图像插补效果。且在硬件实现阶段,将数据的输入和输出设计为流水线形式以实现插补的实时性。本发明采取的技术方案是,应用于CMOS图像传感器的新型实时插补算法,包括如下步骤:红色、蓝色像素中缺失的绿色像素值的恢复:像素中缺失红色、蓝色像素值的恢复:红色、蓝色像素中缺失的蓝色、红色像素值的恢复:此两个像素分量的恢复采用的双线性方法,即R、B中缺失的B、R像素值分别由其最相邻的四个对角线上的四个B、R像素的平均值得到;本发明主要应用于数字图像处理。
申请公布号 CN102682427B 申请公布日期 2014.06.25
申请号 CN201210101402.1 申请日期 2012.04.09
申请人 天津大学 发明人 高静;陈莞;史再峰;徐江涛;姚素英;王彬;高志远
分类号 G06T5/00(2006.01)I 主分类号 G06T5/00(2006.01)I
代理机构 天津市北洋有限责任专利代理事务所 12201 代理人 刘国威
主权项 1.一种应用于CMOS图像传感器的新型实时插补方法,其特征是,包括如下步骤:红色、蓝色像素中缺失的绿色像素值的恢复:(1)对于位于偶数行奇数列的R<sub>43</sub><maths num="0001"><![CDATA[<math><mrow><msub><mi>G</mi><mn>43</mn></msub><mo>=</mo><msub><mi>R</mi><mn>43</mn></msub><mo>+</mo><msub><mi>K</mi><msub><mi>R</mi><mn>43</mn></msub></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0002"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>R</mi><mn>43</mn></msub></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>K</mi><msub><mi>R</mi><mn>33</mn></msub></msub><mo>+</mo><msub><mi>K</mi><msub><mi>R</mi><mn>53</mn></msub></msub><mo>+</mo><msub><mi>K</mi><msub><mi>R</mi><mn>42</mn></msub></msub><mo>+</mo><msub><mi>K</mi><msub><mi>R</mi><mn>44</mn></msub></msub><mo>)</mo></mrow><mo>/</mo><mn>4</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中  <maths num="0003"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>R</mi><mn>33</mn></msub></msub><mo>=</mo><msub><mi>G</mi><mn>33</mn></msub><mo>-</mo><msub><mi>R</mi><mn>33</mn></msub><mo>=</mo><msub><mi>G</mi><mn>33</mn></msub><mo>-</mo><mrow><mo>(</mo><msub><mi>R</mi><mn>23</mn></msub><mo>+</mo><msub><mi>R</mi><mn>43</mn></msub><mo>)</mo></mrow><mo>/</mo><mn>2</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0004"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>R</mi><mn>53</mn></msub></msub><mo>=</mo><msub><mi>G</mi><mn>53</mn></msub><mo>-</mo><msub><mi>R</mi><mn>53</mn></msub><mo>=</mo><msub><mi>G</mi><mn>53</mn></msub><mo>-</mo><mrow><mo>(</mo><msub><mi>R</mi><mn>43</mn></msub><mo>+</mo><msub><mi>R</mi><mn>63</mn></msub><mo>)</mo></mrow><mo>/</mo><mn>2</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0005"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>R</mi><mn>42</mn></msub></msub><mo>=</mo><msub><mi>G</mi><mn>42</mn></msub><mo>-</mo><msub><mi>R</mi><mn>42</mn></msub><mo>=</mo><msub><mi>G</mi><mn>42</mn></msub><mo>-</mo><mrow><mo>(</mo><msub><mi>R</mi><mn>41</mn></msub><mo>+</mo><msub><mi>R</mi><mn>43</mn></msub><mo>)</mo></mrow><mo>/</mo><mn>2</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0006"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>R</mi><mn>44</mn></msub></msub><mo>=</mo><msub><mi>G</mi><mn>44</mn></msub><mo>-</mo><msub><mi>R</mi><mn>44</mn></msub><mo>=</mo><msub><mi>G</mi><mn>44</mn></msub><mo>-</mo><mrow><mo>(</mo><msub><mi>R</mi><mn>43</mn></msub><mo>+</mo><msub><mi>R</mi><mn>45</mn></msub><mo>)</mo></mrow><mo>/</mo><mn>2</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>6</mn><mo>)</mo></mrow></mrow></math>]]></maths>根据以上公式,首先对像素所处位置进行边缘判定,设:UP=|R<sub>43</sub>-R<sub>23</sub>|  DOWN=|R<sub>63</sub>-R<sub>43</sub>|LEFT=|R<sub>41</sub>-R<sub>43</sub>|  RIGHT=|R<sub>45</sub>-R<sub>43</sub>|1)若UP+DOWN&gt;LEFT+RIGHT则该像素位置在水平方向存在边界,根据(1-1),此时<img file="FDA0000472540640000013.GIF" wi="106" he="76" />只取水平方向的两个K<sub>R</sub>值:<maths num="0007"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>R</mi><mn>43</mn></msub></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>K</mi><msub><mi>R</mi><mn>42</mn></msub></msub><mo>+</mo><msub><mi>K</mi><msub><mi>R</mi><mn>44</mn></msub></msub><mo>)</mo></mrow><mo>/</mo><mn>2</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>7</mn><mo>)</mo></mrow></mrow></math>]]></maths>2)若UP+DOWN&lt;LEFT+RIGHT则该像素位置在垂直方向存在边界,根据(1-1),此时<img file="FDA0000472540640000015.GIF" wi="92" he="82" />只取垂直方向的两个K<sub>R</sub>值:<maths num="0008"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>R</mi><mn>43</mn></msub></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>K</mi><msub><mi>R</mi><mn>33</mn></msub></msub><mo>+</mo><msub><mi>K</mi><msub><mi>R</mi><mn>53</mn></msub></msub><mo>)</mo></mrow><mo>/</mo><mn>2</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>8</mn><mo>)</mo></mrow></mrow></math>]]></maths>3)若UP+DOWN=LEFT+RIGHT则该像素位置附近不存在边界,<img file="FDA0000472540640000016.GIF" wi="102" he="75" />值即由(1-1)计算得到;(2)对于位于奇数行偶数列的B<sub>34</sub><maths num="0009"><![CDATA[<math><mrow><msub><mi>G</mi><mn>34</mn></msub><mo>=</mo><msub><mi>B</mi><mn>34</mn></msub><mo>+</mo><msub><mi>K</mi><msub><mi>B</mi><mn>34</mn></msub></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>9</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0010"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>B</mi><mn>34</mn></msub></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>K</mi><msub><mi>B</mi><mn>33</mn></msub></msub><mo>+</mo><msub><mi>K</mi><msub><mi>B</mi><mn>35</mn></msub></msub><mo>+</mo><msub><mi>K</mi><msub><mi>B</mi><mn>24</mn></msub></msub><mo>+</mo><msub><mi>K</mi><msub><mi>B</mi><mn>44</mn></msub></msub><mo>)</mo></mrow><mo>/</mo><mn>4</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>10</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中 <maths num="0011"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>B</mi><mn>33</mn></msub></msub><mo>=</mo><msub><mi>G</mi><mn>33</mn></msub><mo>-</mo><msub><mi>B</mi><mn>33</mn></msub><mo>=</mo><msub><mi>G</mi><mn>33</mn></msub><mo>-</mo><mrow><mo>(</mo><msub><mi>B</mi><mn>32</mn></msub><mo>+</mo><msub><mi>B</mi><mn>34</mn></msub><mo>)</mo></mrow><mo>/</mo><mn>2</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>11</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0012"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>B</mi><mn>35</mn></msub></msub><mo>=</mo><msub><mi>G</mi><mn>35</mn></msub><mo>-</mo><msub><mi>B</mi><mn>35</mn></msub><mo>=</mo><msub><mi>G</mi><mn>35</mn></msub><mo>-</mo><mrow><mo>(</mo><msub><mi>B</mi><mn>34</mn></msub><mo>+</mo><msub><mi>B</mi><mn>36</mn></msub><mo>)</mo></mrow><mo>/</mo><mn>2</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>12</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0013"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>B</mi><mn>24</mn></msub></msub><mo>=</mo><msub><mi>G</mi><mn>24</mn></msub><mo>-</mo><msub><mi>B</mi><mn>24</mn></msub><mo>=</mo><msub><mi>G</mi><mn>24</mn></msub><mo>-</mo><mrow><mo>(</mo><msub><mi>B</mi><mn>14</mn></msub><mo>+</mo><msub><mi>B</mi><mn>34</mn></msub><mo>)</mo></mrow><mo>/</mo><mn>2</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>13</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0014"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>B</mi><mn>44</mn></msub></msub><mo>=</mo><msub><mi>G</mi><mn>44</mn></msub><mo>-</mo><msub><mi>B</mi><mn>44</mn></msub><mo>=</mo><msub><mi>G</mi><mn>44</mn></msub><mo>-</mo><mrow><mo>(</mo><msub><mi>B</mi><mn>34</mn></msub><mo>+</mo><msub><mi>B</mi><mn>54</mn></msub><mo>)</mo></mrow><mo>/</mo><mn>2</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>14</mn><mo>)</mo></mrow></mrow></math>]]></maths>根据以上公式,首先对像素所处位置进行边缘判定,设:UP=|B<sub>14</sub>-B<sub>34</sub>|  DOWN=|B<sub>54</sub>-B<sub>34</sub>|LEFT=|B<sub>32</sub>-B<sub>34</sub>|  RIGHT=|B<sub>36</sub>-B<sub>34</sub>|1)若UP+DOWN&gt;LEFT+RIGHT则该像素位置在水平方向存在边界,根据(1-9),此时<img file="FDA00004725406400000113.GIF" wi="98" he="77" />只取水平方向的两个K<sub>B</sub>值:<maths num="0015"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>B</mi><mn>34</mn></msub></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>K</mi><msub><mi>B</mi><mn>33</mn></msub></msub><mo>+</mo><msub><mi>K</mi><msub><mi>B</mi><mn>35</mn></msub></msub><mo>)</mo></mrow><mo>/</mo><mn>2</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>15</mn><mo>)</mo></mrow></mrow></math>]]></maths>2)若UP+DOWN&lt;LEFT+RIGHT则该像素位置在垂直方向存在边界,根据(1-9),此时<img file="FDA0000472540640000022.GIF" wi="90" he="76" />只取垂直方向的两个K<sub>B</sub>值:<maths num="0016"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>B</mi><mn>34</mn></msub></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>K</mi><msub><mi>B</mi><mn>24</mn></msub></msub><mo>+</mo><msub><mi>K</mi><msub><mi>B</mi><mn>44</mn></msub></msub><mo>)</mo></mrow><mo>/</mo><mn>2</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>16</mn><mo>)</mo></mrow></mrow></math>]]></maths>3)若UP+DOWN=LEFT+RIGHT则该像素位置附近不存在边界,<img file="FDA0000472540640000024.GIF" wi="103" he="76" />值即由(1-9)计算得到;像素中缺失红色、蓝色像素值的恢复:对于当前绿色像素的红色和蓝色分量值的恢复采用相同的方法,以G<sub>33</sub>为例:(1)对于奇数行奇数列的绿色像素G<sub>33</sub>缺失的蓝色像素的恢复:<maths num="0017"><![CDATA[<math><mrow><msub><mi>B</mi><mn>33</mn></msub><mo>=</mo><msub><mi>G</mi><mn>33</mn></msub><mo>+</mo><msub><mi>K</mi><msub><mi>R</mi><mn>33</mn></msub></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>17</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0018"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>B</mi><mn>33</mn></msub></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>K</mi><msub><mi>B</mi><mn>32</mn></msub></msub><mo>+</mo><msub><mi>K</mi><msub><mi>B</mi><mn>34</mn></msub></msub><mo>)</mo></mrow><mo>/</mo><mn>2</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>18</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0019"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>B</mi><mn>32</mn></msub></msub><mo>=</mo><msub><mi>G</mi><mn>32</mn></msub><mo>-</mo><msub><mi>B</mi><mn>32</mn></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>19</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0020"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>B</mi><mn>34</mn></msub></msub><mo>=</mo><msub><mi>G</mi><mn>34</mn></msub><mo>-</mo><msub><mi>B</mi><mn>34</mn></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>20</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中 G<sub>32</sub>=(G<sub>31</sub>+G<sub>33</sub>+G<sub>22</sub>+G<sub>24</sub>)/4  (1-21)G<sub>34</sub>=(G<sub>33</sub>+G<sub>35</sub>+G<sub>24</sub>+G<sub>44</sub>)/4  (1-22)(2)对于奇数行奇数列的绿色像素G<sub>33</sub>缺失的红色像素的恢复:<maths num="0021"><![CDATA[<math><mrow><msub><mi>R</mi><mn>33</mn></msub><mo>=</mo><msub><mi>G</mi><mn>33</mn></msub><mo>-</mo><msub><mi>K</mi><msub><mi>R</mi><mn>33</mn></msub></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>23</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0022"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>R</mi><mn>33</mn></msub></msub><mo>=</mo><mrow><mo>(</mo><msub><mi>K</mi><msub><mi>R</mi><mn>23</mn></msub></msub><mo>+</mo><msub><mi>K</mi><msub><mi>R</mi><mn>43</mn></msub></msub><mo>)</mo></mrow><mo>/</mo><mn>2</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>24</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0023"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>R</mi><mn>23</mn></msub></msub><mo>=</mo><msub><mi>G</mi><mn>23</mn></msub><mo>-</mo><msub><mi>R</mi><mn>23</mn></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>25</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0024"><![CDATA[<math><mrow><msub><mi>K</mi><msub><mi>R</mi><mn>43</mn></msub></msub><mo>-</mo><msub><mi>G</mi><mn>43</mn></msub><mo>-</mo><msub><mi>R</mi><mn>43</mn></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mn>26</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中 G<sub>23</sub>=(G<sub>13</sub>+G<sub>22</sub>+G<sub>24</sub>+G<sub>33</sub>)/4 (1-27)G<sub>43</sub>=(G<sub>33</sub>+G<sub>42</sub>+G<sub>44</sub>+G<sub>53</sub>)/4  (1-28)红色、蓝色像素中缺失的蓝色、红色像素值的恢复:此两个像素分量的恢复采用的双线性方法,即R、B中缺失的B、R像素值分别由其最相邻的两条对角线上的四个B、R像素的平均值得到;1)对于位于偶数行奇数列的R<sub>23</sub>B<sub>23</sub>=(B<sub>12</sub>+B<sub>14</sub>+B<sub>32</sub>+B<sub>34</sub>)/4  (1-29)2)对于位于奇数行偶数列的B<sub>32</sub>R<sub>32</sub>=(R<sub>21</sub>+R<sub>23</sub>+R<sub>41</sub>+R<sub>43</sub>)/4  (1-30)其中R、G、B分别代表红、绿、蓝三个颜色的像素分量,K<sub>B</sub>和K<sub>R</sub>表示颜色通道间的相关性,角标代表其在Bayer图中对应的行和列;采用25个寄存器以及4个RAM来实时存储数据,25个寄存器组成第一级5×5寄存器窗口,窗口中间寄存器中对应的像素为当前像素;当从传感器模型传输过来的帧同步信号和行同步信号同时有效时,最末尾的寄存器读入传感器传输过来的Bayer数据;在下一个时钟周期到来时,最末尾的寄存器的数据传递到前一个寄存器中,同时最末尾的寄存器读进新传递过来的Bayer数据,像这样依次传递,传输经过4个RAM,直到传递到第一个寄存器中;当第一级5×5寄存器窗口填满像素数据后,在每下一个时钟周期要将每级5×5寄存器窗口中的值传到下一级的5×5寄存器窗口中去;即横向实时串行开始向第一级5×5寄存器窗口输入像素信息的同时将每级5×5寄存器窗口像素信息纵向并行传输至下一级5×5寄存器窗口保存,依次类推,直至当前像素按照前述红色、蓝色像素中缺失的绿色像素值的恢复,像素中缺失红色、蓝色像素值的恢复,红色、蓝色像素中缺失的蓝色、红色像素值的恢复步骤,进行插补计算、处理完毕。
地址 300072 天津市南开区卫津路92号