Hi everyone. I’ve got an Arducam 200MP Motorized Focus USB 3.0 Camera Module and the max resolution JPG images it produces are basically unusable - they come out defective. I tested with the provided software on two different machines, one Windows 10 and one Ubuntu, and the exact same problem appears on both. Curious if anyone else has run into this.
Welcome. Could you describe what the output actually looks like - any pattern, color cast, or corruption? And which demo/tool version are you using to capture and convert the raw frames?
The images have a grid-like pattern across them plus a strong greenish tint. I followed the instructions thoroughly and tried changing every parameter in the provided software - nothing made any difference. Arducam support also sent me a separate testing program through private message, but that didn’t resolve it either. I also asked whether the camera supports 10-bit output and never got an answer.
Thanks, that narrows it down. Can you capture one raw frame and run the conversion tool on it, then paste the exact commands you used and attach a sample? Also, are you on the latest version of the ArducamUVCPythonDemo repo, specifically the Arducam200MPDemo branch?
The extra test program they sent doesn’t change the result. Also, I’ve been told the main library is compiled, so there’s nothing I can fix on my end. The documentation for this product is honestly very lacking - there’s almost nothing about how the raw output is supposed to be processed.
We’ve dug into this on our side. The 200MP pixel arrangement follows the left-side pattern in the datasheet diagram. To convert that to a standard Bayer layout you need a Remosaic operation. The sensor doesn’t support 200MP Remosaic natively, so it has to be done in software using a split-and-merge sequence. In your output we can see grid-like artifacts - 4x4 identical pixel clusters - and the average pixel values of the first and second rows differ significantly. We think those sensitivity variations between pixels are causing the grid pattern. The greenish tint is separate: it’s from missing ISP steps, specifically AWB and gamma correction.
That matches what Arducam wrote to me by email, I’ll quote it: “Image Quality Analysis: While the Remosaic operation procedure is technically correct, we’ve identified grid-like artifacts in the output images. We observe 4x4 identical pixel clusters, and our calculations reveal significant differences between the average pixel values of the first and second rows. We believe these sensitivity variations between pixels are causing the grid-like artifacts. Currently, we are actively exploring solutions to address this issue.” So the problem is confirmed on your side. The issue for me is I can’t fix it because the conversion library is compiled.
Right, and to be clear about where the defect sits: the problem is in the compiled arducam_200mp_convert_lib library. The remosaic process is wrong - it isn’t accounting for pixel exposure differences within each color filter. The sensor itself is fine; the split-and-merge remosaic is the part producing the artifacts. There’s no user-side workaround until we ship a corrected library. We’re also checking remotely whether the units still function normally - I’ve sent the remote support details to you privately.
I work with Python regularly and this is a very simple program, so I’m confident it’s not my setup. Here’s the exact reproduction:
- Download or clone: GitHub - ArduCAM/ArducamUVCPythonDemo at Arducam200MPDemo · GitHub
- Install Python and all the libraries in requirements.txt
- Run: python arducam_demo.py -W 1280 -H 720 -F -i 0 --wait-frames 2 (use --wait-frames 5 on Linux)
- Adjust focus and capture a picture by pressing “a” on the keyboard
- Convert the raw picture: python arducam_200mp_convert.py -f “raw image path”
- You get a defective jpg picture.
It fails every time on both Windows 10 and Ubuntu.
Thanks for the repro steps, that’s exactly the flow we’re testing. The split-and-merge order is shown in the diagram in the docs - the raw layout on the left gets remosaiced into standard Bayer. The sequence itself is technically correct, but the implementation doesn’t handle the exposure differences within each color filter, which is why you see the 4x4 clusters. Since the conversion library is compiled, this can’t be patched or worked around from the Python side.
Exactly - the problem is isolated to that compiled library. If the library were open source or the remosaic were done in Python, I could fix it myself. As it stands, the only fix is for Arducam to correct the remosaic process in the library to account for pixel exposure differences within each color filter.
Agreed. To summarize the current conclusion: the 200MP sensor doesn’t support 200MP Remosaic natively, so software must perform the split-and-merge remosaic. The current implementation in arducam_200mp_convert_lib doesn’t account for pixel exposure differences within each color filter, which produces the grid-like artifacts (4x4 identical clusters, differing first/second row averages). The greenish tint comes from missing AWB and gamma correction. The library is compiled, so there’s no user-side fix right now. We’re working on correcting the remosaic process and will update here once a corrected build is available.