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.

Jpeg质量

大虾们,

用DM8168, 同时保存yuv420,jpeg数据, 然后将yuv420使用opencv转成bmp。发现jpeg要比bmp模糊很多,

想问下怎么改善jpeg质量。

谢谢!

  • JPEG本來就是有損壓縮,一定會比BMP畫質有差。

    要提升JPEG效果,可以在編碼處修改Q值參數。詳情可見RDK包內的Jpeg encoder usr guide

  • I saw your thread on e2e. Could you provide the screenshot of JPEG/BMP to let me know how much the difference are ?

  • 你好, 谢谢你的回复。

    问下怎么修改Q? 我查看了http://wenku.baidu.com/link?url=eFDqCirAcCkf5tJ8ILeezW0wbrt0H80Nd5u7S4L7LfmnQVLiLgltqegJ5osx-Sf9t76ebE5YGznJpptFnA8aCxdTbaZQV8fuNZo-0SdpjnW 还是没找到怎么修改啊。


  • ########################################################################
    # Encoder Control
    ########################################################################

    FrameWidth = 176 # Frame width should be multiple of 16
    FrameHeight = 144 # Frame height should be multiple of 16

    QualityFactor = 20 # Quality Setting to be used.
    # Ranges between 2 and 97.
    # 2 => Lowest Quality. 97 => Best Quality.

    CaptureWidth = 176 # Image width to compute image pitch.
    # If Capture Width is > Image Width then
    # use the former for image pitch.
    generateHeader = 0 # Set 1 => Generate Header Only
    debugTraceLevel = 0 # Specifies the debug trace level
    lastNFramesToLog = 0 # Specifies the number of past frames
    # to log debug trace. If debugTraceLevel is
    # greater than 0, lastNFramesToLog must range
    # between 0 and 10.
    tilerEnable = 1 # 1 => Luma in TILER8, 0=> Luma in Raw.
    chromaTilerMode = 0 # Valid only if tilerEnable = 1
    # 1 => Chroma in TILER8, 0 => Chroma in
    # TILER16

  • 我使用的是dvrrdk_0.4版本, 我的代码为:

    文件  mcfw//src_bios6/links_m3video/iva_enc/encLink_jpeg.c

    430 static Int enclink_jpeg_set_dynamic_params(IJPEGVENC_DynamicParams *
    431                                            dynamicParams,
    432                                            EncLink_AlgDynamicParams *
    433                                            algDynamicParams)
    434 {
    435     *dynamicParams = JPEGVENC_TI_DYNAMICPARAMS;
    436     dynamicParams->videnc2DynamicParams.inputWidth =
    437         algDynamicParams->inputWidth;
    438     dynamicParams->videnc2DynamicParams.inputHeight =
    439         algDynamicParams->inputHeight;
    440     dynamicParams->videnc2DynamicParams.captureWidth =
    441         algDynamicParams->inputPitch;
    442     dynamicParams->videnc2DynamicParams.targetBitRate =
    443         algDynamicParams->targetBitRate;
    444     dynamicParams->videnc2DynamicParams.targetFrameRate =
    445         algDynamicParams->targetFrameRate;
    446     dynamicParams->videnc2DynamicParams.interFrameInterval =
    447         algDynamicParams->interFrameInterval;
    448     dynamicParams->videnc2DynamicParams.intraFrameInterval =
    449         algDynamicParams->intraFrameInterval;
    450     dynamicParams->videnc2DynamicParams.mvAccuracy =
    451         algDynamicParams->mvAccuracy;
    452     dynamicParams->videnc2DynamicParams.refFrameRate =
    453         algDynamicParams->refFrameRate;
    454     dynamicParams->videnc2DynamicParams.ignoreOutbufSizeFlag = XDAS_FALSE;
    455     
    456     return 0;
    457 }   

    在函数 EncLinkJPEG_algSetConfig 中有
    695         algObj->u.jpegAlgIfObj.dynamicParams.qualityFactor = algObj->algDynamicParams.qpInitI;

    设置algObj->u.jpegAlgIfObj.dynamicParams.qualityFactor  是否就可以了?

    # Ranges between 2 and 97.
    # 2 => Lowest Quality. 97 => Best Quality.

    也适用吗?

    谢谢。
     

  • 谢谢 你的答复, 我的问题已经解决了。

  • 怎么解决的,分享下啊,谢谢

  • venc_start()  后

    175     VENC_CHN_DYNAMIC_PARAM_S params = { 0 };
    176     params.qpMin = 97;
    177     params.qpMax = 97;
    178     params.qpInit = 97;
    179     Venc_setDynamicParam(0, 0, &params, VENC_QPVAL_I);

    实际上就是设置那个qualityFactor