This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

sensor采集图像不对



我的sensor是mt9p031,ic是dm368,用dvsdk4.02开发的,但是我拍出来的图像颜色不对,物体是蓝色,拍出来的是红色

这是物体本来的图像

 

这是拍出来的图像

请问vpfe或者mt 9p031的寄存器可以改颜色吗?!

如果不能怎么解决呢?!

  • 你好,

    能否尝试修改sensor输出的第一个颜色,或者DM36x的CCD Color Pattern (CCOLP)寄存器?

  • 9p031里面没有找到相关的设置,只在vpfe里面有ccolp的设置

     

    dm365ccdc.c里面有与之对应的代码:

    .config_params = {  

    .data_size = CCDC_12_BITS,  

    .data_shift = CCDC_NO_SHIFT,  

    .col_pat_field0 = {   

                                    .olop = CCDC_GREEN_BLUE,  

                                     .olep = CCDC_BLUE,   

                                    .elop = CCDC_RED,   

                                    .elep = CCDC_GREEN_RED,    },  

    .col_pat_field1 = {    

                                     .olop = CCDC_GREEN_BLUE,  

                                      .olep = CCDC_BLUE,   

                                     .elop = CCDC_RED,   

                                     .elep = CCDC_GREEN_RED,    },

     

    val = (params->config_params.col_pat_field0.olop) |

     (params->config_params.col_pat_field0.olep << 2) |

     (params->config_params.col_pat_field0.elop << 4) |

     (params->config_params.col_pat_field0.elep << 6) |

     (params->config_params.col_pat_field1.olop << 8) |

     (params->config_params.col_pat_field1.olep << 10) |

     (params->config_params.col_pat_field1.elop << 12) |

     (params->config_params.col_pat_field1.elep << 14);  

    regw(val, CCOLP);

     

    我刚开始想可能是蓝色红色对调,所以把上面红色的代码改成了:

    .olep = CCDC_RED,  

      .elop = CCDC_BLUE, 

    结果还是那样的,我不知道有没有改对,是根据什么来改的?

    如果是根据bayer格式来改的,又怎么对应呢?

  • 你需要按照bayer pattern的格式来配置,可能sensor输出的第一个像素是R,或者是Gr,或者是Gb,或者是Gr,四种可能性。

    R Gr

    Gb G

    四种可能性配置是:RGrGbG,GrRGGb,GbGRGr,GGbGrR

  • 所有的情况我都试了一遍,还是没有反应,图像还是跟原来一样

    我用的是dvsdk里面的encode代码,格式是yuv420

     

    另外我的sensor y接口接的是368的c接口,sensor的c接口是接的368的y接口,刚开始不能出图像,

    后来我改了ycswap寄存器能出图像了,但是出来的图像颜色不对

     

    我不知道是不是由于sensor的yc信号接反而引起的,如果是那又怎么改呢?

    不知道还有没有其他寄存器没有设置呢?

  • 什么意思?

    你的9P031不是cmos的sensor么,怎么接进来的是YUV数据?

  • 是这样的,sensor接368本来应该按照一定顺序,比如d0接c0,d1接c1,但是我的不是这样的,我的d0接c6,d1接c7,所以我认为yc信号就反了,另外颜色改isif寄存器没用,要改sensor那端

  • 你说的颜色错是指bayer pattern错吧?

    除了你说的可以改sensor 应该是更改输出的第一个像素的位置之外,

    ISP这里可以改

    1.IPIPE_SRC_COL

    或者

    2 更改IPIPE的其实读像素的位置,.IPIPE_SRC_VPS,IPIPE_SRC_HPS。

  • 能否参考一下你的DM365的MT9P031设计,我现在在做DM8168的MT9P031的设计

  • 8168有sensor接口吗,有isp处理功能吗

  • 你好,我也遇到同样的问题,我用的MT9M034

    本来是C0接D0,C1接D1……Y0接D8……

    我板卡的接线是Y0接D0,Y1接D1……C0接D8……

    刚开始不能成像,后来我改了CCDCFG.YCINSWP = 1后,交换了YC信号,能出图像了,但是颜色不对,偏紫色。

    我想问,你后来解决了这个问题吗?有什么解决办法可以分享一下?谢谢!

  • 我的邮箱:mapdog@sina.com

    你可以发个图片到我的邮箱里面,让我看看

  • 应该是UV顺序反了,还有你贴的图偏紫色,有贴滤光片吗?

  • Christian Shen:

        你好!

        我现在DM8127上用MN43041,遇到一些问题,怀疑是像素顺序出错,但是不知道.IPIPE_SRC_COL,IPIPE_SRC_VPS,IPIPE_SRC_HPS,这几个寄存器该如何配置,有介绍配置额相关文档么?我的帖子如下,麻烦去看一看,谢谢!

    http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/22001.aspx

  • 其实颜色不对就是该rggb排列,rggb一共有4个排列,挨个试试就行了

    另外我觉得可能yuv排列也不太对,查查你的yuv格式排列

    我不知道你的是720p格式还是什么格式,如果是720应该是74m左右,而且要外部时钟经过分频得到

  • mapdog 你好!

    图中显示的也是rawdata,我用CCD抓取rawdata数据,4种可能逐个验证,还是不正确。

    我的是1080P的,27M晶振,正常像素时钟应该为30P/81M,60P/162M.但是现在是30P/71M,60P/142M。

    现在也找到了一些原因。我开启的是fullfeature模式,测得以上结果。我们改用caputure_display模式,时钟正确了,显示也比较流畅,但是图像颜色还是不对。

    在DM8127里面,底层驱动配置好了MN34041的寄存器,应用程序哪一部分会更改他们呢?

    还有关于RGB颜色顺序的部分,现在也没有找到?