How to get uniform pixel data in a frame?

I am getting 16bit data frame from my IR qvga imager (gray scale). The frame showing left side more darker than right side. if it’s due to non uniformity, how can I make it uniform, so that all the active pixels in frame should respond equally? Though, I tried normalization, clahe, contrast, but still there is difference showing between left and right view. Please suggest and let me know if I am wrong somewhere.

This is what I get after applying equalization on the capture frame in opencv-python
image

this looks like bayer pattern and camera vignette, and it looks like a quarter frame, but who knows.

you’ve been at this for ages, with no perceivable progress. perhaps hand your assignment off to someone else, or deal with the manufacturer. I’ve tried to help before but never got decent information out of you. some of what you did say was either contradictory, implausible, or not verifiable.

did you ever say what type of camera it is? make and model? specs? visible light, infrared, thermal, what?

did you ever say what’s supposed to be visible in the picture? is this just a picture of a blank wall or something?

Hi @crackwitz thank you for your comment.
I am sorry but since i am new to this and as I understand, this forum is to get help if somebody stuck during development or don’t understand how to process further, so I drop my query here. Also I had asked a question earlier and you requested the captured image and i shared the test code and image but then also no body replied. Is this my unfortunate? :cry:
I know, i am not expert in this but trying my best to learn and doing progress. The contents you requested I shared some of them already like this is:
-this is not ready to use camera from manufacturer. it is mainly research oriented IR thermal qvga (340x240) camera so there is no make and model exact. I do my best to share info to get the things working and progressive. so I am trying to work on this while getting some help from such a big forum here.

The camera is pointing to some paper boxes but its not clear in the image.
I am here to looking for help from the experts and experienced like you but I don’t know what I asked wrong here. :frowning:
I am looking for your kind help on this. the sample code and tech specs I shared. if anything more, please let me know.
sorry and thanks.

What you should do:

  • point your camera toward a flat uniform texture,
  • you expect getting an image with uniform values,
  • you can try to model the difference between what you are getting and what you expect mathematically (e.g. using some sort of polynomial functions?),
  • or maybe simply use “this image” directly like some sort of correction map,
  • do it for multiple exposure times, and maybe try to see if you can model it using some sort of function with respect the camera exposure time.

For sure, you will need to know in which colorspace your original image is.


Understanding color & the in-camera image processing pipeline for computer vision, Michael S. Brown, ICCV 2019 Tutorial

1 Like

Hi @Eduardo Thank you for your suggestions.
I pointed the imager to a plane uniform white paper box. I am expecting an image with uniform values but I am getting shadow while increasing pixel values from left to right as you can see in the image (dark to bright). This is what I am getting after applying following to raw16 frame data:

  • normalize it to MINMAX, 255; convert o uint8 to visualize image
  • CLAHE; applied contrast enhancement
    *Equalization; improve contrast
    I need to apply some algorithm on frame data to see its uniformity so that it can show me all the pixels uniform and then only I can proceed with some more image processing implementation as per my test requirement like…
    • read roi data for ambient temperature and for object temperature to test the imager responsivity.
      I am trying this all on raw16 gray scale image (didn’t map any other color space yet). I am looking for what kind of mathematical function can be applied to make it uniform ( i tried some mean, average…etc. but didn’t work well). may be I am missing something. Please suggest~