I am using the Finboard and thus bf609 for the purpose of decoding data matrix. I am using the following configuration of the PVP to get a binary thresholded image: IPF --> THC --> OPF. I am testing the image output from the pipe by printing it to a binary file and then using the image viewer.
The THC clipping thresholds are set as follows:
oTHC0ClipThreshold.nMinClipValue = 255; oTHC0ClipThreshold.nMinClipThreshold = 180; oTHC0ClipThreshold.nMaxClipValue = 10; oTHC0ClipThreshold.nMaxClipThreshold = 180;
If I zoom in and increase the gamma settings this is what I get:
As can be noticed, the image has 3 column of separation throughout between relevant pixels, if I am putting it correctly. The pixel values appearing in the binary are exactly as calibrated i.e. 0x0a and 0xff, with a lot of 0X00 in between. I am thus not able to decode the data matrix.
I can't understand why this is happening. Grateful if anyone can help me out.
A few details which might be relevant are given below.
//IPF0 settings oIPFControl.bOutPort0 = true; oIPFControl.eOutPort1 = ADI_PVP_IPF_PORT1_DISABLE; oIPFControl.bOutPort2 = false; oIPFControl.eColorFormat = ADI_PVP_COLOR_FORMAT_32BIT; oIPFControl.bEnableUnpack = false; oIPFControl.bExtractRed = false; oIPFControl.bEnableSignExtn = false; oIPFControl.bEnableQFormat = false; oIPFControl.bColorExtractionEnable = false; oIPFControl.bBayerType = false; oIPFControl.bBlueExtraction = false; oIPFPipeControl.bEnableDrain = false; oIPFPipeControl.bEnableStatusDMA = false; //THC settings oTHC0Control.eTHCMode = ADI_PVP_THC_MODE_CLIPPING; oTHC0Control.eOutputFormat = ADI_PVP_THC_OFRMT_32BIT; //output format oTHC0Control.eHWindowMode = ADI_PVP_THC_HWIND_MODE_WHOLE_FRAME; //whole frame as ROI oTHC0Control.eRLEWindowMode = ADI_PVP_THC_RWIND_MODE_WHOLE_FRAME; //whole frame as ROI oTHC0Control.bFrameLevelEncoding = true; oTHC0Control.bEnableZeroExtension = false; oTHC0Control.bEnableHistCounters = false; oTHC0ClipThreshold.nMinClipValue = 255; oTHC0ClipThreshold.nMinClipThreshold = 180; oTHC0ClipThreshold.nMaxClipValue = 10; oTHC0ClipThreshold.nMaxClipThreshold = 180; //OPF settings: oOPF0Control.eInDataWidth = ADI_PVP_OPF_IN_DATA_32BIT; oOPF0Control.eOutDataWidth = ADI_PVP_OPF_OUT_DATA_32BIT; oOPF0Control.bUseUpper16bits = false; oOPF0Control.bChangeSign = false; oOPF0Control.bFinishSignal = true;