# Can I use an ANN to translate image output from one sensor to simulate output from another sensor?

Say, for instance, if I had image data from one high resolution digital camera and wanted to make it look like it was taken from another, lower resolution, digital camera? Would training input/output pairs of overlapping images be a good way to do this? What is this technique called?

For example, say I wanted to be able to count benches in parks in LOW resolution imagery. Could I go through these sample images and create an appropriate dataset of high and low resolution pairs to train a network to learn what a low resolution bench looked like? Would I be able to discern low resolution benches if my training set was incredibly diverse (image chips if entire city parks vs individual objects like fountains, trees and statues)?

I like this example because the images come from different sensors as well as being different resolutions. Some of my research has led me to super resolution, which is kind of the opposite of what I'm trying to do.

As for the amount of data, it would be painstaking but not technically difficult to get overlapping high and low resolution imagery.

• Certainly, this could be achieved but I won't suggest wasting the computation over what could be achieved using simpler image processing techniques. Commented Mar 6, 2019 at 6:57
• If your goal is to do classification on low resolution images, then learning a high res to low res transformation seems unnecessary. Either just use low resolution images directly (if you don't have them why are you building a classifier for it??), or just use standard image downsampling in order to get some from high resolution images. Commented Apr 6, 2019 at 12:00

This is very much possible. There is a function which can map the images from the higher resolution pictures to the lower dimensional ones; and a neural network can be trained to learn that function.

However, to train a neural network to do this you will need thousands of images from both cameras. Then you can feed the pictures taken with your higher resolution camera as the input to the network and then compute the loss of the network at the output with the corresponding lower resolution images.

If you do not have so many images, there has been work on taking images and applying some sort of filter to change their appearance. These techniques are often called style transfer, you can find some tutorial here and code which I have tried and can confirm works here. It might be hard to get a representative image to use as the style image using your old camera. You can try an average of a few pictures, or a picture of a white background, you would have to try things out, I do not know what would work in this case.

You noted that there is superresolution, which is a kind of "information adding" to images. The opposite is quite possible but not very useful since lowering resolution can be achieved by many non-machine learning techniques.

You can try:

• Get your high resolution images and camera specifications to use basic image processing to transform images to a result similar to the one of another camera.
• Camera Resolution: Is easy to do with proper image resizing, try different interpolation algorithms.
• Sensor Specifications: how sensitive to light is the sensor? what is the bit depth for color/intensity? Those are things to consider.
• Sensor Amplifier and Other Lightning Condition: Basically, ISO, White Balance and such.
• Try changing these conditions to achieve the desired result

Notes:

• If there is difference is sensors construction (For Example one is CMOS and the other is CCD) it might be useful to use "underresolution" that you want to create, since there is large difference in response to light saturation and such.

• When training, check for image alignment since this can yield absurd differences for least-square image similarity (you should try using SIMD)