Bayer-filter removal from camera sensor #120

Open
opened 2026-04-14 08:28:11 +00:00 by hugo · 5 comments
Owner

Either with a laser or chemically.

The goal is to dissolve the color filter array (CFA), typically constructed using an organic polymer matrix. Most bayer filters are based on pigmented positive photoresists. The goal is to remove the photoresist without destroying the underlying SiO2. We can try N-Methyl-2-pyrrolidone (NMP) or perhaps Dimethyl Sulfoxide (DMSO).

From the cloudynights forum:

There are several brands of positive photoresist stripper solvents out there that can remove even hardbaked positive photoresists, and from the SDS appear to be 90-99% 1-methyl-2-pyrrolidinone (NMP). It looks like a 10-15 exposure to the NMP solvent, with light mechanical agitation to transport dissolved photoresist away from the substrate surface is enough to remove the bulk of the photoresist, with a 2nd solvent bath to wash away the trace amounts of photoresist-laden solvent. A rinse with DI water and drying is recommended after stripping.

I can confirm that the NMP significantly helps with the CFA removal.
I wetted the sensor with a solution of N-methyl and 1-methyl Pyrrolidone at ambient temperature and after 2 minutes I started to touch its surface with a cotton bud. The greenish hue of the CFA gave way to the bare golden-brown surface of the sensor. The removal is harder at the edges and requires steady (surgeon) hands but can be done without additional tools.

Literature:

Forums:

Either with a laser or chemically. The goal is to dissolve the color filter array (CFA), typically constructed using an organic polymer matrix. Most bayer filters are based on pigmented positive photoresists. The goal is to remove the photoresist without destroying the underlying SiO2. We can try N-Methyl-2-pyrrolidone (NMP) or perhaps Dimethyl Sulfoxide (DMSO). From the cloudynights forum: > There are several brands of positive photoresist stripper solvents out there that can remove even hardbaked positive photoresists, and from the SDS appear to be 90-99% 1-methyl-2-pyrrolidinone (NMP). It looks like a 10-15 exposure to the NMP solvent, with light mechanical agitation to transport dissolved photoresist away from the substrate surface is enough to remove the bulk of the photoresist, with a 2nd solvent bath to wash away the trace amounts of photoresist-laden solvent. A rinse with DI water and drying is recommended after stripping. > I can confirm that the NMP significantly helps with the CFA removal. I wetted the sensor with a solution of N-methyl and 1-methyl Pyrrolidone at ambient temperature and after 2 minutes I started to touch its surface with a cotton bud. The greenish hue of the CFA gave way to the bare golden-brown surface of the sensor. The removal is harder at the edges and requires steady (surgeon) hands but can be done without additional tools. Literature: - Laser De-Bayering of Low-Cost Image Sensors, https://ieeexplore.ieee.org/document/9999000 - Excimer laser photoresist stripping, https://doi.org/10.1117/12.241858 - Ultraviolet Imaging with Low Cost Smartphone Sensors: Development and Application of a Raspberry Pi-Based UV Camera , https://doi.org/10.3390/s16101649 Forums: - https://www.cloudynights.com/forums/topic/719093-chemically-stripping-bayer-matrix-and-microlenses-from-a-canon-sensor/

Partial Techtree

flowchart BT

    classDef eoi fill:#fff, stroke:#000, color:#000;
    classDef dependant fill:#fff, stroke:#888, color:#888;
    classDef ultimate fill:#fff, stroke:#000, color:#000;
    classDef dep_missing fill:#fcc, stroke:#800, color:#000;
    classDef dep_assigned fill:#ffa, stroke:#a50, color:#000;
    classDef dep_completed fill:#afa, stroke:#080, color:#000;
    0:::eoi
    0["<a href='https://git.fa-fo.de/fafo/techtree/issues/120' target='_blank'>#120</a> | ASSIGNED<br/><i>Process</i><br/><b>Bayer-filter removal from camera sensor</b>"]
    1:::dep_assigned
    1["<a href='https://git.fa-fo.de/fafo/techtree/issues/4' target='_blank'>#4</a> | ASSIGNED<br/><i>Equipment</i><br/><b>Wet Lab (Chemistry)</b>"]
    2:::dep_assigned
    2["<a href='https://git.fa-fo.de/fafo/techtree/issues/118' target='_blank'>#118</a> | ASSIGNED<br/><i>Development</i><br/><b>Hazard Assessment</b>"]
    3:::dep_completed
    3["<a href='https://git.fa-fo.de/fafo/techtree/issues/68' target='_blank'>#68</a> | COMPLETED<br/><i>Equipment</i><br/><b>Heating Stirrer</b>"]
    4:::dep_assigned
    4["<a href='https://git.fa-fo.de/fafo/techtree/issues/67' target='_blank'>#67</a> | ASSIGNED<br/><i>Equipment</i><br/><b>Chemical Storage/Containment</b>"]
    5:::dep_assigned
    5["<a href='https://git.fa-fo.de/fafo/techtree/issues/27' target='_blank'>#27</a> | ASSIGNED<br/><i>Equipment</i><br/><b>Technical Ventilation</b>"]
    6:::dep_assigned
    6["<a href='https://git.fa-fo.de/fafo/techtree/issues/23' target='_blank'>#23</a> | ASSIGNED<br/><i>Equipment</i><br/><b>Fume Hood</b>"]
    0 --> 1
    4 --> 5
    4 --> 2
    5 --> 2
    6 --> 5
    1 --> 6
    1 --> 5
    1 --> 4
    1 --> 3
    1 --> 2

Digest: 68e69b8cf06ad8a475a0ad9081238fe2e5c589e57386356d3ed729d694942377; Last Updated: 2026-04-15 08:11:56

## Partial Techtree ```mermaid flowchart BT classDef eoi fill:#fff, stroke:#000, color:#000; classDef dependant fill:#fff, stroke:#888, color:#888; classDef ultimate fill:#fff, stroke:#000, color:#000; classDef dep_missing fill:#fcc, stroke:#800, color:#000; classDef dep_assigned fill:#ffa, stroke:#a50, color:#000; classDef dep_completed fill:#afa, stroke:#080, color:#000; 0:::eoi 0["<a href='https://git.fa-fo.de/fafo/techtree/issues/120' target='_blank'>#120</a> | ASSIGNED<br/><i>Process</i><br/><b>Bayer-filter removal from camera sensor</b>"] 1:::dep_assigned 1["<a href='https://git.fa-fo.de/fafo/techtree/issues/4' target='_blank'>#4</a> | ASSIGNED<br/><i>Equipment</i><br/><b>Wet Lab (Chemistry)</b>"] 2:::dep_assigned 2["<a href='https://git.fa-fo.de/fafo/techtree/issues/118' target='_blank'>#118</a> | ASSIGNED<br/><i>Development</i><br/><b>Hazard Assessment</b>"] 3:::dep_completed 3["<a href='https://git.fa-fo.de/fafo/techtree/issues/68' target='_blank'>#68</a> | COMPLETED<br/><i>Equipment</i><br/><b>Heating Stirrer</b>"] 4:::dep_assigned 4["<a href='https://git.fa-fo.de/fafo/techtree/issues/67' target='_blank'>#67</a> | ASSIGNED<br/><i>Equipment</i><br/><b>Chemical Storage/Containment</b>"] 5:::dep_assigned 5["<a href='https://git.fa-fo.de/fafo/techtree/issues/27' target='_blank'>#27</a> | ASSIGNED<br/><i>Equipment</i><br/><b>Technical Ventilation</b>"] 6:::dep_assigned 6["<a href='https://git.fa-fo.de/fafo/techtree/issues/23' target='_blank'>#23</a> | ASSIGNED<br/><i>Equipment</i><br/><b>Fume Hood</b>"] 0 --> 1 4 --> 5 4 --> 2 5 --> 2 6 --> 5 1 --> 6 1 --> 5 1 --> 4 1 --> 3 1 --> 2 ``` <small>Digest: 68e69b8cf06ad8a475a0ad9081238fe2e5c589e57386356d3ed729d694942377; Last Updated: 2026-04-15 08:11:56</small>
hugo added a new dependency 2026-04-14 08:43:08 +00:00
hugo removed a dependency 2026-04-14 08:43:10 +00:00
hugo self-assigned this 2026-04-14 08:44:54 +00:00
Author
Owner

Can't set #4 as a dependency.

Can't set https://git.fa-fo.de/fafo/techtree/issues/4 as a dependency.
Owner

You did not set an element type label, @hugo

You did not set an element type label, @hugo
rahix added a new dependency 2026-04-15 08:11:31 +00:00
rahix added the
Type
Process
label 2026-04-15 08:11:50 +00:00
Author
Owner

@rahix wrote in #120 (comment):

You did not set an element type label, @hugo

oops.

@rahix wrote in https://git.fa-fo.de/fafo/techtree/issues/120#issuecomment-2014: > You did not set an element type label, @hugo oops.
Owner

@hugo wrote in #120 (comment):

Can't set #4 as a dependency.

Yeah, forgejo broken... The workaround is to copy this ID string from #4 into the search, then it shows up:

image

@hugo wrote in https://git.fa-fo.de/fafo/techtree/issues/120#issuecomment-2011: > Can't set #4 as a dependency. Yeah, forgejo broken... The workaround is to copy this ID string from #4 into the search, then it shows up: ![image](/attachments/e3cdfc38-27f9-478e-b9ed-b9c127dd3b10)
Sign in to join this conversation.
No description provided.