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

# 傳統與 Z 型紋影系統於機器學習應用中的實作分析

> ICMLSC 2025 研討會論文，比較傳統與 Z 型紋影光學系統的實作差異與架設成本，評估截止比（cutoff ratio）效應對流場可視化的影響，並探討兩種光學架構在機器學習資料蒐集與模型訓練中的可行性。

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="Tokyo, Japan" date="2025-01-24" url="https://icmlsc.org/2025.html" />

# Implementation Analysis of Traditional and Z-Configuration Schlieren Systems in Machine Learning Applications

Wen-Lin Chu, Jia-Ming Zhou, Jun-Shen Shi, and Bo-Lin Jian

## 摘要 Abstract

紋影成像 (Schlieren imaging) 是一種基於光傳播與投影原理的非侵入式流場可視化技術。本研究分析 Z 型與標準紋影架構之間的差異，並探討其於機器學習應用中的潛力。標準紋影系統採用簡化式配置，由光源與凹面鏡組成。其過程首先將光源（如點光源或雷射）置於凹面鏡焦點處，反射後產生平行光束，光束通過受測物時於焦點位置設置刀口以切割部分光線，從而增強光偏折的可見度。
Z 型配置則屬典型的紋影攝影系統排列，利用兩面凹面鏡形成 Z 型光路。此配置可在維持系統緊湊與對稱的同時，有效延伸光學路徑。基於此，本研究比較兩種架構方式，並探討其於機器學習應用中的實際實現結果。隨著機器學習技術的持續進展，本研究預期這些光學技術將在紋影分析領域獲得更廣泛應用，進一步提升工業自動化檢測過程的效率與準確度。

Schlieren imaging is a non-invasive flow visualization technique based on light propagation and projection principles. This study analyzes the differences between Z-type and standard Schlieren setup methods and discusses their applications in machine learning. The standard Schlieren system employs a simplified configuration comprising a light source and a concave mirror. The process begins by positioning the light source (such as a point source or laser) at the focal point of the concave mirror, generating parallel light beams after reflection. These parallel beams pass through the test subject, with a knife edge placed directly at the focal point to cut the light rays, thereby enhancing the visibility of light deflection. The Z-type configuration represents a typical Schlieren photography system arrangement that utilizes two concave mirrors in a Z-shaped alignment. This arrangement effectively extends the optical path while maintaining system compactness and symmetry. Consequently, this research compares these two setup methods and explores their implementation outcomes in machine learning applications. With the continuous advancement of machine learning technologies, this study anticipates that these techniques will find increasingly widespread applications in schlieren analysis, potentially enhancing the efficiency and accuracy of industrial automated inspection processes.

## 關鍵字 Keywords

* 紋影成像技術 Schlieren Imaging Technique
* Z 型配置 Z-Configuration
* 機器學習應用 Machine Learning Application

## 研究結果示例

<Tabs>
  <Tab title="System Overview">
    <p>此圖展示 Z 型紋影光學系統的光路配置原理，其中點光源位於左側凹面鏡的焦點位置，經反射後形成平行光束通過測試物體，當光束經過具有折射率梯度的流場時會產生偏折，隨後由右側凹面鏡（與左鏡相距 2*f*）將光束聚焦至傅立葉轉換平面，並在該焦點位置放置可調整方向的刀刃（支援垂直、水平或雙向遮擋模式）以濾除未偏折光線，最終由相機影像平面擷取經刀刃調製後的紋影影像，此標準配置作為紋影流場視覺化與機器學習訓練資料擷取的基礎光學架構。</p>

    <img src="https://mintcdn.com/felimet/o4nUK2uwNPSF27VA/images/ICMLSC2025_demo1.png?fit=max&auto=format&n=o4nUK2uwNPSF27VA&q=85&s=e49a0a43340cdef85f882d9c8154eb40" alt="Z-type Schlieren optical path system" width="3255" height="1782" data-path="images/ICMLSC2025_demo1.png" />
  </Tab>

  <Tab title="Knife Edge Cutoff Ratio">
    <p>此圖展示紋影成像系統中刀刃截止率 (Knife Edge Cutoff Ratio) 對影像品質的影響效果 。5 張影像分別對應 0%、25%、50%、75% 與 100% 的截止率設定，清楚呈現隨著截止率增加，影像背景亮度逐漸降低的趨勢。</p>

    <img src="https://mintcdn.com/felimet/o4nUK2uwNPSF27VA/images/ICMLSC2025_demo3.png?fit=max&auto=format&n=o4nUK2uwNPSF27VA&q=85&s=04391282e53434b4c296cd879bc40eb5" alt="Knife Edge Cutoff Ratio" width="2248" height="1469" data-path="images/ICMLSC2025_demo3.png" />
  </Tab>

  <Tab title="Heating Differential Schlieren Imaging">
    <p>此圖展示標準型 (Standard) 與 Z 型 (Z-type) 紋影系統在檢測透明塑膠片加熱前後的折射率變化差異，並透過差分影像後處理技術進行定量化分析。</p>
    <p>紋影技術能夠視覺化透明介質中的密度變化，當透明塑膠片受熱時，材料內部的溫度梯度會導致折射率 (Refractive Index) 分布改變，進而使通過的光線產生偏折。此技術利用光線折射原理，將溫度與密度的相關性轉化為可視化影像。溫度升高時密度降低，折射率隨之改變，造成光線偏折路徑的差異。</p>
    <p>差異影像 (Difference) 採用偽色彩編碼 (Pseudo-color Encoding) 進行視覺化分析，其中洋紅色 (Magenta) 代表加熱前後無變化的區域，青綠色 (Cyan-green) 標示出具有顯著折射率差異的區域，此技術能有效突顯熱擾動的空間分布模式 。這種差分運算方法可消除背景雜訊與系統性誤差，僅保留由熱效應引起的訊號變化，為後續機器學習模型提供高品質的特徵提取基礎。</p>

    <img src="https://mintcdn.com/felimet/o4nUK2uwNPSF27VA/images/ICMLSC2025_demo2.png?fit=max&auto=format&n=o4nUK2uwNPSF27VA&q=85&s=550a96105db5b4c114ce71744a9c94e8" alt="Heating Differential Schlieren Imaging" width="3209" height="1865" data-path="images/ICMLSC2025_demo2.png" />
  </Tab>
</Tabs>

## 引用格式 BibTeX

<CiteSwitch
  bibtex={`@InProceedings{ChuICMLSC2025,
author    = {Wen-Lin Chu and Jia-Ming Zhou and Jun-Shen Shi and Bo-Lin Jian},
title     = {Implementation Analysis of Traditional and Z-Configuration Schlieren Systems in Machine Learning Applications},
booktitle = {International Conference on Machine Learning and Soft Computing (ICMLSC 2025)},
year      = {2025},
month     = {January},
address   = {Tokyo, Japan}
}`}
/>
