> ## 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.

# 基於深度神經網路之紋影光學影像品質優化與濾除偽影技術之開發

> IEEE DTDA 2025 研討會論文，提出結合盲解卷積（Blind Deconvolution）與條件式生成對抗網路（CGANs）的深度神經網路方法，提升紋影光學影像品質、消除模糊與鬼影，並有效濾除流場可視化中的偽影。

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

本研究開發一套紋影影像品質提升之軟硬體整合最佳化方案，針對傳統紋影技術在影像清晰度與細節呈現上的根本性限制進行改善。我們建構了基於 Z 型光路配置的精密光學系統,並提出創新的雙階段影像處理策略，結合盲去卷積技術 (Blind Deconvolution) 與條件式生成對抗網路 (Conditional Generative Adversarial Networks，CGANs)，有效緩解單離軸紋影系統中的偽影問題。

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

## 研究結果示例

<Tabs>
  <Tab title="System Overview">
    <p>單離軸紋影系統（General system）vs. Z 型紋影系統（Z-type 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>此圖展示了單離軸紋影系統（Single Off-axis System）所面臨的核心技術挑戰。圖片清楚呈現了傳統單離軸紋影光學配置的四大固有限制：首先是非同軸光路所產生的偽影（Ghost artifacts），這是由於光線未能完全共軸傳播而在感測器上形成的假訊號；其次是影像失真與光學像差（Image distortion and aberrations），導致待測物的真實邊界與密度梯度資訊被扭曲；第三是對比度與清晰度的顯著降低（Reduced contrast and clarity），使得微弱的流場特徵難以辨識；最後是干涉圖案（Interference patterns）的出現，進一步降低影像的訊噪比。</p>
    <p>圖片左側展示了一幅典型的單離軸紋影原始影像，可明顯觀察到整個視場有著高密度的顆粒狀噪點與偽影結構，嚴重影響了對真實流場特徵的判讀。右側的放大視圖則以紅框標示出關鍵區域，並透過藍色與黃色箭頭分別標註「Real」（真實訊號）與「Artifact」（偽影）兩種特徵，清楚說明在原始影像中真實物理現象與系統偽影的混淆程度。本研究開發盲反捲積結合條件式生成對抗網路（CGANs）之兩階段處理策略，目的即在於有效分離與抑制這些系統性的光學偽影，同時保留並增強真實的流場密度梯度資訊，從根本上突破傳統單離軸紋影技術的影像品質瓶頸。</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>此圖完整呈現了本研究提出之兩階段影像處理策略的執行流程與量化驗證結果。圖片上半部以視覺化方式展示了紋影影像從原始輸入（Input）經過盲反捲積處理（After deconvolution）再到 pix2pix 條件式生成對抗網路（After pix2pix）的漸進式品質提升過程。在原始輸入影像中，可明顯觀察到高密度的顆粒狀噪點與偽影結構；經過第一階段的盲反捲積處理後，影像噪點密度雖略有改善，但整體視覺品質提升有限，仍保留大量的高頻雜訊；而在第二階段透過 pix2pix 網路處理後，影像品質發生了顯著的質變，絕大部分的顆粒狀偽影被有效抑制，影像呈現出更為平滑且清晰的視覺效果，同時保留了關鍵的流場結構資訊。</p>
    <p>下半部的量化分析表格則以客觀的數值指標驗證了處理效果的顯著性。表格比較了輸入影像（含偽影）與輸出影像（經 pix2pix 處理後）在三個關鍵影像品質指標上的表現：均方誤差（MSE）從 0.01 大幅降低至 0.0013，降幅達 87%，顯示重建影像與理想影像間的像素級誤差顯著縮小；結構相似性指數（SSIM）從 0.359 躍升至 0.8198，提升幅度超過 128%，證實了演算法在保留影像結構完整性方面的卓越表現；峰值訊噪比（PSNR）從 20 dB 提升至 28.94 dB，增加了 8.94 dB，反映出訊號品質的實質性改善。這三項指標的全面提升，客觀證明了本研究所提出的盲反捲積結合 CGANs 兩階段處理架構，能夠有效濾除單離軸紋影系統的系統性偽影，並顯著提升影像的清晰度、對比度與結構保真度，為紋影光學量測的精確性與可靠性奠定堅實的技術基礎。</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

<CiteSwitch
  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}
}`}
/>
