> ## Documentation Index
> Fetch the complete documentation index at: https://felimet-hub.jmcores.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Deep neural network for schlieren quality and artifacts

> IEEE DTDA 2025 paper combining blind deconvolution with Conditional GANs to enhance schlieren image quality and remove ghost artifacts in flow visualization.

export const CiteSwitch = ({bibtex = "", lang = "zh"}) => {
  const t = lang === "en" ? {
    hint: "Switch citation format",
    copy: "Copy",
    copied: "Copied"
  } : {
    hint: "切換引用格式",
    copy: "複製",
    copied: "已複製"
  };
  const [fmt, setFmt] = useState("bibtex");
  const [copied, setCopied] = useState(false);
  const raw = (bibtex || "").trim();
  const field = name => {
    const m = raw.match(new RegExp(name + "\\s*=\\s*[{\"]([^{}\"]*)[}\"]", "i"));
    return m ? m[1].replace(/\s+/g, " ").trim() : "";
  };
  const typeM = raw.match(/@(\w+)/);
  const isConf = typeM ? (/inproceedings|conference/i).test(typeM[1]) : false;
  const title = field("title");
  const journal = field("journal");
  const booktitle = field("booktitle");
  const year = field("year");
  const volume = field("volume");
  const number = field("number");
  const doi = field("doi").replace(/^\s*(https?:\/\/)?(dx\.)?doi\.org\//i, "").replace(/^doi:\s*/i, "").trim();
  const address = field("address");
  const pages = field("pages").replace(/(\d)\s*-+\s*(\d)/g, "$1–$2");
  const splitName = name => {
    const n = name.trim();
    if (n.includes(",")) {
      const p = n.split(",");
      return {
        last: p[0].trim(),
        first: p.slice(1).join(",").trim()
      };
    }
    const p = n.split(/\s+/);
    const last = p.pop();
    return {
      first: p.join(" "),
      last
    };
  };
  const initialsOf = first => {
    const parts = first.split(/[\s-]+/).filter(Boolean);
    const ini = parts.map(p => p[0].toUpperCase() + ".");
    return first.includes("-") ? ini.join("-") : ini.join(" ");
  };
  const names = field("author") ? field("author").split(/\s+and\s+/).map(splitName) : [];
  const joinList = (arr, amp) => {
    if (arr.length <= 1) return arr[0] || "";
    if (arr.length === 2) return arr.join(amp ? ", & " : " and ");
    const sep = amp ? ", & " : ", and ";
    return arr.slice(0, -1).join(", ") + sep.replace(/^, /, ", ") + arr[arr.length - 1];
  };
  const ieeeAuthors = joinList(names.map(n => (initialsOf(n.first) + " " + n.last).trim()), false);
  const apaAuthors = joinList(names.map(n => (n.last + ", " + initialsOf(n.first)).trim()), true);
  const ieeeRest = isConf ? [booktitle && "in " + booktitle, address, year, pages && "pp. " + pages].filter(Boolean).join(", ") : [journal, volume && "vol. " + volume, number && "no. " + number, pages && "pp. " + pages, year, doi && "doi: " + doi].filter(Boolean).join(", ");
  const ieee = `${ieeeAuthors}, "${title}," ${ieeeRest}.`.replace(/\s+/g, " ");
  const apaVol = volume ? volume + (number ? "(" + number + ")" : "") : "";
  const apa = isConf ? `${apaAuthors} (${year}). ${title}. ${booktitle ? "In " + booktitle + (address ? ", " + address : "") : address}.`.replace(/\s+/g, " ") : `${apaAuthors} (${year}). ${title}. ${[journal, apaVol, pages].filter(Boolean).join(", ")}.${doi ? " https://doi.org/" + doi : ""}`.replace(/\s+/g, " ");
  const TABS = [{
    key: "bibtex",
    label: "BibTeX"
  }, {
    key: "ieee",
    label: "IEEE"
  }, {
    key: "apa",
    label: "APA"
  }];
  const current = fmt === "bibtex" ? raw : fmt === "ieee" ? ieee : apa;
  const doCopy = () => {
    try {
      navigator.clipboard.writeText(current);
      setCopied(true);
      setTimeout(() => setCopied(false), 1500);
    } catch (e) {
      setCopied(false);
    }
  };
  const css = `
  .cs-root{--cs-bg:#FAF8F3;--cs-surface:rgba(0,0,0,0.025);--cs-border:rgba(0,0,0,0.09);--cs-text:#2b2722;--cs-dim:#6f6a62;--cs-faint:#8a8378;--cs-accent:#bf7551;--cs-code:rgba(0,0,0,0.04);border:1px solid var(--cs-border);border-radius:14px;background:var(--cs-bg);color:var(--cs-text);overflow:hidden;}
  .dark .cs-root{--cs-bg:#1b1a18;--cs-surface:rgba(255,255,255,0.03);--cs-border:rgba(255,255,255,0.08);--cs-text:#e7e3da;--cs-dim:#a8a299;--cs-faint:#8a8378;--cs-accent:#cf8a68;--cs-code:rgba(255,255,255,0.05);}
  .cs-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--cs-border);flex-wrap:wrap;}
  .cs-head-ic{color:var(--cs-accent);flex-shrink:0;}
  .cs-hint{font-size:12px;color:var(--cs-faint);margin-right:auto;}
  .cs-tab{border:1px solid var(--cs-border);background:transparent;border-radius:8px;padding:5px 12px;cursor:pointer;color:var(--cs-dim);font:inherit;font-size:12.5px;font-weight:600;transition:all .15s;}
  .cs-tab:hover{background:var(--cs-surface);}
  .cs-tab-on{border-color:rgba(191,117,81,.5);background:rgba(191,117,81,.1);color:var(--cs-accent);}
  .cs-body{position:relative;padding:14px 15px;}
  .cs-pre{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.6;white-space:pre-wrap;word-break:break-word;color:var(--cs-text);}
  .cs-cite{font-size:13.5px;line-height:1.7;color:var(--cs-text);word-break:break-word;}
  .cs-copy{position:absolute;top:11px;right:12px;display:flex;align-items:center;gap:5px;border:1px solid var(--cs-border);background:var(--cs-bg);border-radius:8px;padding:5px 10px;cursor:pointer;color:var(--cs-dim);font:inherit;font-size:11.5px;font-weight:600;transition:all .15s;}
  .cs-copy:hover{border-color:rgba(191,117,81,.5);color:var(--cs-accent);}
  .cs-copy-ok{color:#5f8a52;border-color:rgba(95,138,82,.4);}
  .dark .cs-copy-ok{color:#86b274;}
  .cs-copy svg{flex-shrink:0;}
  `;
  return <div className="cs-root">
      <style>{css}</style>
      <div className="cs-head">
        <svg className="cs-head-ic" xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><path d="M10 8h8" /><path d="M6 8h.01" /><path d="M6 12h.01" /><path d="M6 16h.01" /><path d="M10 12h8" /><path d="M10 16h4" /><rect width="20" height="18" x="2" y="3" rx="2" /></svg>
        <span className="cs-hint">{t.hint}</span>
        {TABS.map(tab => <button key={tab.key} type="button" className={"cs-tab" + (fmt === tab.key ? " cs-tab-on" : "")} onClick={() => setFmt(tab.key)}>{tab.label}</button>)}
      </div>
      <div className="cs-body">
        <button type="button" className={"cs-copy" + (copied ? " cs-copy-ok" : "")} onClick={doCopy}>
          {copied ? <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round"><path d="M20 6 9 17l-5-5" /></svg> : <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round"><rect width="14" height="14" x="8" y="8" rx="2" /><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2" /></svg>}
          {copied ? t.copied : t.copy}
        </button>
        {fmt === "bibtex" ? <pre className="cs-pre">{raw}</pre> : <div className="cs-cite">{current}</div>}
      </div>
    </div>;
};

export const PubMeta = ({type = "journal", venue, date, confType, doi, url}) => {
  const doiUrl = doi ? doi.startsWith("http") ? doi : `https://doi.org/${doi}` : null;
  const pillBase = {
    display: "inline-block",
    padding: "0.15rem 0.6rem",
    borderRadius: "9999px",
    fontSize: "0.78rem",
    fontWeight: 600,
    lineHeight: 1.6,
    border: "1px solid"
  };
  const tone = {
    type: {
      color: "#8a9a7b",
      borderColor: "rgba(138,154,123,0.4)",
      background: "rgba(138,154,123,0.1)"
    },
    venue: {
      color: "#c9a35b",
      borderColor: "rgba(201,163,91,0.4)",
      background: "rgba(201,163,91,0.1)"
    },
    date: {
      color: "#5b6c8f",
      borderColor: "rgba(91,108,143,0.4)",
      background: "rgba(91,108,143,0.1)"
    },
    link: {
      color: "#bf7551",
      borderColor: "rgba(191,117,81,0.4)",
      background: "rgba(191,117,81,0.1)"
    }
  };
  const typeLabel = type === "conference" ? "Conference" : "Journal";
  return <div style={{
    display: "flex",
    flexWrap: "wrap",
    gap: "0.5rem",
    alignItems: "center",
    marginBottom: "1.5rem"
  }}>
      <span style={{
    ...pillBase,
    ...tone.type
  }}>{typeLabel}</span>
      {venue && <span style={{
    ...pillBase,
    ...tone.venue
  }}>{venue}</span>}
      {date && <span style={{
    ...pillBase,
    ...tone.date
  }}>{date}</span>}
      {confType && <span style={{
    ...pillBase,
    ...tone.type
  }}>{confType}</span>}
      {doiUrl && <a href={doiUrl} target="_blank" rel="noopener noreferrer" style={{
    ...pillBase,
    ...tone.link,
    textDecoration: "none"
  }}>
          DOI ↗
        </a>}
      {url && <a href={url} target="_blank" rel="noopener noreferrer" style={{
    ...pillBase,
    ...tone.link,
    textDecoration: "none"
  }}>
          Link ↗
        </a>}
    </div>;
};

<PubMeta type="conference" venue="2025 IEEE International Conference on Device Technologies for Diversified Applications (IEEE DTDA 2025)" date="2025-10-20" url="https://ieee-dtda.org/wp-content/uploads/DTDA_1stCFP.pdf" />

# Development of Schlieren Optical Imaging Quality Optimization and Artifact Removal Technology Based on Deep Neural Network

Wen-Lin Chu, Jia-Ming Zhou, Yi-Wei Lin, and Bo-Lin Jian

## Abstract

This research developed an integrated hardware and software optimization solution for Schlieren image quality enhancement, addressing fundamental limitations in traditional Schlieren techniques regarding image clarity and detail presentation. We constructed a precision optical system based on Z-type optical path configuration and proposed an innovative two-stage image processing strategy that combines blind deconvolution techniques with Conditional Generative Adversarial Networks (CGANs) to effectively mitigate artifact issues in single off-axis Schlieren systems.

## Keywords

* Schlieren technique
* Image enhancement
* Deep learning applications
* Conditional Generative Adversarial Networks (CGANs)
* Blind deconvolution

## Sample Results

<Tabs>
  <Tab title="System Overview">
    <p>General single off-axis schlieren system vs. Z-type schlieren system.</p>

    <img src="https://mintcdn.com/felimet/o4nUK2uwNPSF27VA/images/IEEEDTDA_demo3.png?fit=max&auto=format&n=o4nUK2uwNPSF27VA&q=85&s=c89c1088d35b48af249c791a87b0e22f" alt="Schlieren System Overview" width="3222" height="1100" data-path="images/IEEEDTDA_demo3.png" />
  </Tab>

  <Tab title="Ghost Artifacts">
    <p>This figure illustrates the core technical challenges faced by the single off-axis schlieren system, clearly presenting four inherent limitations of traditional single off-axis schlieren optical configurations: first, ghost artifacts arising from non-coaxial optical paths, which are false signals formed on the sensor when light cannot propagate in perfect coaxial alignment; second, image distortion and optical aberrations, which distort the true boundary and density-gradient information of the object under test; third, significantly reduced contrast and clarity, making it difficult to identify weak flow-field features; and fourth, the appearance of interference patterns, which further degrade the image signal-to-noise ratio.</p>
    <p>The left side of the figure shows a typical raw single off-axis schlieren image, where a high density of granular noise and artifact structures is clearly observable across the entire field of view, severely hindering the identification of true flow-field features. The magnified view on the right uses a red bounding box to highlight a key region, with blue and yellow arrows respectively marking "Real" (true signal) and "Artifact" features, clearly illustrating the degree to which genuine physical phenomena and system artifacts are conflated in the raw image. The two-stage processing strategy of blind deconvolution combined with Conditional Generative Adversarial Networks (CGANs) developed in this study aims precisely to effectively separate and suppress these systematic optical artifacts while preserving and enhancing the true flow-field density-gradient information, fundamentally breaking through the image-quality bottleneck of traditional single off-axis schlieren techniques.</p>

    <img src="https://mintcdn.com/felimet/o4nUK2uwNPSF27VA/images/IEEEDTDA_demo1.png?fit=max&auto=format&n=o4nUK2uwNPSF27VA&q=85&s=f5abeec479b3dfb0cc0996fc26867404" alt="Single Off-axis Schlieren Ghost Artifacts" width="2068" height="1763" data-path="images/IEEEDTDA_demo1.png" />
  </Tab>

  <Tab title="Quantitative Analysis">
    <p>This figure presents the complete execution workflow and quantitative validation results of the two-stage image processing strategy proposed in this study. The upper half visually demonstrates the progressive quality improvement of the schlieren image from the raw input, through blind deconvolution processing (After deconvolution), to the pix2pix Conditional Generative Adversarial Network stage (After pix2pix). In the raw input image, a high density of granular noise and artifact structures is clearly observable. After the first-stage blind deconvolution, the noise density shows a slight improvement, but the overall visual quality gain is limited and substantial high-frequency noise remains. Following the second-stage pix2pix network processing, image quality undergoes a significant qualitative transformation: the vast majority of granular artifacts are effectively suppressed, yielding a smoother and clearer visual result while retaining key flow-field structural information.</p>
    <p>The quantitative analysis table in the lower half uses objective numerical metrics to verify the significance of the processing effect. The table compares input images (with artifacts) and output images (after pix2pix processing) on three key image quality indicators: Mean Squared Error (MSE) drops dramatically from 0.01 to 0.0013, an 87% reduction, indicating a significant decrease in pixel-level error between the reconstructed and ideal images; Structural Similarity Index (SSIM) rises from 0.359 to 0.8198, an improvement of over 128%, confirming the algorithm's outstanding performance in preserving image structural integrity; and Peak Signal-to-Noise Ratio (PSNR) increases from 20 dB to 28.94 dB, a gain of 8.94 dB, reflecting a substantial improvement in signal quality. The comprehensive improvement across all three metrics objectively demonstrates that the two-stage blind deconvolution plus CGANs processing architecture proposed in this study effectively removes systematic artifacts from single off-axis schlieren systems and significantly enhances image clarity, contrast, and structural fidelity, laying a solid technical foundation for the precision and reliability of schlieren optical measurement.</p>

    <img src="https://mintcdn.com/felimet/o4nUK2uwNPSF27VA/images/IEEEDTDA_demo2.png?fit=max&auto=format&n=o4nUK2uwNPSF27VA&q=85&s=6839b2d9cab12a7832cfc71b8dbadf31" alt="Quantitative Analysis of Image Quality" width="2862" height="2060" data-path="images/IEEEDTDA_demo2.png" />
  </Tab>
</Tabs>

## BibTeX Citation

<CiteSwitch
  lang="en"
  bibtex={`@InProceedings{ChuDTDA2025,
author    = {Wen-Lin Chu and Jia-Ming Zhou and Yi-Wei Lin and Bo-Lin Jian},
title     = {Development of Schlieren optical imaging quality optimization and artifact removal technology based on deep neural network},
booktitle = {2025 IEEE International Conference on Device Technologies for Diversified Applications (IEEE DTDA 2025)},
year      = {2025},
month     = {October}
}`}
/>
