Fullseye op カタログ画像・専用記事 仕様書(第 2 陣企画書)
作成: 2026-08-23(Qiita 大記事 付録 F 増強タスクの第 1 陣納品時に、全指示を恒久仕様として整理)
第 1 陣成果: <ローカルの作業パス>\dev\projects\onocollo-complete\docs\qiita\20260822_g1_evis\ops\(25 図+INSERT_MANIFEST.md)
生成スクリプト一式: セッション scratchpad の fops_lib.py / fops_batch1..4.py / fops_eval1.py / gen_ai_inputs.py
(必要なら imgevolve リポジトリの tools/ へ移設して恒久化すること)
1. 品質規律(全デモ共通・必須)
- 実処理のみ: 描いた想像図は禁止。すべて Fullseye(imgevolve)の op / モジュール関数の実行出力。使った op 名とパラメータを必ず記録。
- 核心主張の実証: 各 op のデモは「この入力ではこの op でないと駄目」が見える入力で組む。可能なら素朴な手法の失敗列(baseline)を並べて対比する。
- 例: watershed=接触物体(単純ラベリングは融合)/ canny=ノイズ下(sobel+閾値は破綻)/ 色抽出=等輝度(輝度では原理的に不可能)/ FFT ノッチ=周期縞(空間平滑化では消えない)。
- 複数入力検証(最低 3 種): 被写体・照明・ノイズ・密度などの条件を変えた 3 入力以上に同一処理を適用。
- パラメータは固定(全入力共通)。入力ごとに調整が必要だった場合はそれ自体を manifest に正直に記録(貴重な情報)。
- 評価必須: 画像を作って終わりにしない。op × 入力の評価表を付ける。
- 真値あり(合成/生成で GT 既知): 計測値 vs 真値と誤差(計数 N/N、MAE、px 誤差、g 推定誤差 % 等)。
- 真値なし(実写/定番): 検証可能な代替基準を定義(著者目視計数、局所コントラスト指標、ランダム点対照など)。
- 判定列: 成功 / 部分成功 / 失敗。失敗も削除せず教訓として掲載(赤緑インジケータ禁止 — ✓/✗ や枠線で)。
- 評価つきで少なく > 未評価で多く。
- 図の様式: 行=入力バリエーション(2〜4 行)× 列=入力/(baseline)/出力 のグリッド。各パネル上部に小ラベル(op 名は英語、説明は日本語)。幅 ~900px、PNG、1 枚 400KB 以下(パレット減色・縮小可)。
- honest 表記: キャプションに入力の出所を必ず明記 — 「AI 生成画像(Gemini)」「自前合成(真値つき)」「scikit-image 同梱」「NASA(PD)」「EHT Collaboration(CC BY 4.0)」。医療風画像には「診断用途ではない」を添える。実装の限界も書く(例: 本レジストリの edges_sub_pix は勾配帯を法線方向に放物線当てはめで精密化したサブピクセル実装 —— 平均絶対誤差 0.0228 px 実測、ただし非極大抑制は無いので帯の全画素が稜線に寄る。lines_gauss は Frangi 稜線領域)。
- 家訓: 赤緑インジケータ禁止 / ALL_CAPS 禁止 / 公開物にローカルパス禁止 / 文字入り画像の生成は避け PIL で入れる。
2. 入力素材の方針
- 3 系統を混ぜる: 定番(読者が見慣れている=効果だけが際立つ)1 種+AI 生成/合成 2 種が理想。
- 定番(ライセンス明確なもののみ): scikit-image 同梱(coins/camera/page/moon/checkerboard/retina/hubble_deep_field 等)、OpenCV samples。Lena 禁止。USC-SIPI 等はライセンス原文確認できた場合のみ。
- AI 生成(Gemini gemini-2.5-flash-image、REST): スクリプトは
gen_ai_inputs.py 型(GEMINI_API_KEY は環境変数で渡す。鍵の置き場所は公開文書に書かない)。生成品は tools/fops_article/sample_sources_ai/(2026-09-07 に studio_assets から移動。package の外なので wheel に乗らない) に保存し Studio サンプル素材として再利用。写真調・処理効果が映える被写体。文字入りは避ける。IMAGE_RECITATION で拒否されることがある(実測 1/24)。
- 自前合成: 真値が欲しいデモの本命(欠陥注入、既知ホモグラフィ、dt 既知の物理連番など)。
- 実画像: NASA(images-api.nasa.gov で検索→ images-assets.nasa.gov から取得、PD)、EHT(CC BY 4.0、クレジット必須)。photojournal.jpl.nasa.gov の直リンクは HTML を返すことがあるので注意。
3. 第 1 陣で完成した 25 図(再掲・カテゴリ見出し一致)
差し替え 5: segmentation(watershed 接触分離)/ edges(canny vs sobel)/ Filters(gauss+ノイズ)/ frequency(FFT ノッチ縞除去)/ texture(Laws 等輝度分離)
新規 20: Tools / Transformations / Image / smoothing / gray / XLD / geometry / Regions / contour(稜線 4 実例)/ Segmentation(琥珀)/ restoration / arithmetic / augmentation / 2D Metrology / Inspection(錠剤)/ color / measure(BGA)/ 1D Measuring(年輪・耳石)/ flow(弾道 g 推定)/ detect
既存合格 6: rank(留保)/ region / morphology / Calibration / features / 3D Reconstruction
4. 見送り一覧(第 2 陣候補・ユーザー依頼順)
各項は上記規律(3 種入力・固定パラメータ・評価必須・honest 出所)適用。
- バーコード読み取り(産業カルテット残り): EAN-13 自前生成(真値既知)→ 傾き/ノイズ/照明ムラ劣化 → 領域検出→傾き補正→二値化→バー幅解析で 13 桁デコード→全桁一致まで見せる。レジストリの
decode_barcode は中央走査線のバー計数のみ(実測)なので、デコード表はデモ実装と正直に区分。QR は位置検出+射影補正まで Fullseye、デコードは外部ライブラリ利用を明記。
- 半導体ウェハ(産業カルテット残り): ダイ格子+欠陥注入合成 → FFT 周期パターン異常検出 / ダイ格子検出 / 欠陥 blob 分類。真値つきで検出率まで。
- ナンバープレート(プライバシー厳守): 架空地名・番号の合成プレートのみ。矩形検出→射影補正→二値化→文字切り出し(+テンプレ照合)。「フル OCR ではない」と主張範囲を明示。
- 位置決め(マシンビジョンの本丸・丁寧に): ①フィデューシャルのサブピクセル精度(0.25px 刻みシフト系列で平均誤差・3σ)②(x,y,θ) アライメント誤差 ③回転・スケール・遮蔽 30% 下のテンプレートマッチ成功率表。キャプション軸「位置決め 0.1px がロボットの掴み損ない数 mm に化ける」(Panda 把持=センサスイートと接続)。
- 光弾性(応力の色縞): Fullseye センサスイートの偏光シミュレーションを先に探す(memory: 偏光あり)。無ければ円孔平板の Kirsch 解析解から縞合成 → 縞次数抽出 → 応力集中係数 K を理論値 3.0 と照合。実光弾性には材料定数較正が要る旨を明記。
- サーモグラフィ風: 基板レイアウト+熱源の温度場合成 → 疑似カラー/等温線/ホットスポット blob/温度プロファイル。「実測サーモではない」明記。
- 鉱物薄片の粒クラス分け: watershed 粒界分離(接触分離の第 3 実例)→ 粒特徴量 → 教師なしクラスタ色分け。thin_section.png 生成済み(sample_sources_ai)。「鉱物学的同定ではない」必須。
- 魚・植物の残り: 病斑率 %、養殖体長計測、魚群計数、種子粒径分布。年輪・耳石カウントは第 1 陣で完成済み(fops_measuring1d)。
- 3DGS パネル(自前実装の展示): リポジトリ既存の 3DGS 出力(純 torch ~26dB、SuGaR 法線、tiled 263×)を 1 枚に構成。入力実写 → 新規視点 → 法線/メッシュ。再学習不要、出所シーンを明記。
- TRIZ 感動枠 9 件(ユーザー全採用済み・仕様は以下):
- 創造の柱 1995 vs 2022(Hubble/JWST、レジストレーション残差 px 評価)
- 氷河後退(Landsat PD、氷面積変化 %)
- 雪の結晶×渦巻銀河(六方対称スコア/対数螺旋フィット残差、「6mm と 10 万光年を同じ道具箱で」)
- ニューロン×宇宙大規模構造(稜線第 5 実例、ネットワーク統計)
- InSAR 地震縞(Sentinel-1 or 変位場からの縞合成=真値つき、光弾性と同じ数学の横串)
- 古写真修復(AI 生成のみ・実在人物不可、注入劣化→PSNR/SSIM)
- 失われた文字(合成古文書、IR チャネル仕込み→判読可能文字率)
- スタートレイル(恒星場回転合成→比較明合成、天の極推定 vs 真値)
- アポロ着陸痕(LRO 実画像 PD、既知設置物位置との照合)
- 感動枠は絵の品質(構図・解像感)にも配慮。クレジット必須(NASA/ESA/CSA、EHT 等)。
- rank の対比強化(留保解消): salt&pepper で gauss(にじむ)vs median(消える)の対比列を追加。
- ハイスピード追跡の実シミュレーション版: 第 1 陣は簡易弾道積分で g 0.1〜0.6% 誤差を達成。第 2 陣では onocollo-complete の既存 qpos 資産(PK ボール 8.85m/s、箸の豆射出 2m/s)から連番を切り出し、接触瞬間の速度ジャンプまで見せる。
5. 実装の要点(第 1 陣で得た知見)
- 実行経路:
fullseye.apply(img, op, a, b)(進化レジストリ 752 op、a/b は 0..1 の正規化ノブ)、unified 名前空間(u.tools.* 等、facade 1,606 op)、モジュール直呼び(stereo/terrain/flow/videops/detect/measure/segmentation.watersheds_marker 等)。
- ハマりどころ(実測):
edges_sub_pix は勾配帯ラベリング + 法線方向の放物線当てはめ(2026-09-02 に追加。真値 20.37 の合成ステップエッジで平均絶対誤差 0.500 px → 0.0228 px)。非極大抑制が無いので帯の全画素が稜線へ重なる点は変わらない —— 1 画素幅の連鎖は canny、より高精度な等値線は threshold_sub_pix(0.001px 実測)。
lines_gauss は Frangi 稜線応答の領域を返す(Steger 中心線ではない)→ skeleton を併用して中心線化。
local_max の footprint は最大 9px → 距離マップは gauss 平滑+マーカー dilation で過分割を抑える。
- registry の
projective_trans_image は a/b の canned warp。実ホモグラフィは vector_to_proj_hom_mat2d+gen_image_warp_map。
fit_circle の返り値キーは cy/cx/r/rms。
- 琥珀のような色かぶり素材では CLAHE 前処理が逆効果になり得る(テクスチャ増幅)。最暗パーセンタイル+縁接触成分除外が有効だった。
- 鏡面物体(鋼球)は輪郭抽出がハイライトに取られる → 照明設計(逆光/拡散)の教訓として掲載価値あり。
- PSNR 評価は「ノッチが本当に縞だけ消したか」を暴く(mean+4σ の広域マスクは画像成分も削り PSNR 悪化 → 最強ピーク対のみの小ノッチで 20→35dB)。
- 評価スクリプトは図生成と同一パイプラインを再実行して数値を出す(fops_eval1.py 方式)。図と評価の乖離を防ぐには生成時に評価を組み込む(batch4 方式)が望ましい。
6. 記事化の方針(Fullseye/Studio 専用記事)
- 本仕様の 25 図+第 2 陣を「Fullseye 展示会」として独立記事化(付録 F はその index にリンク)。
- 構成案: ①核心主張の実証(なぜこの op か)②産業検査カルテット(錠剤/BGA/バーコード/ウェハ)③横串(稜線 5 実例=血管・翅脈・葉脈・ひび・ニューロン、年輪=耳石、光弾性=InSAR)④感動枠(宇宙・自然)⑤失敗と教訓(honest コーナー: 鋼球ハイライト、BGA 接触球、CLAHE 逆効果)。
- キャプション軸の在庫: 「1 パック 1 秒で全ポケット」「読み取りの 9 割は前処理」「色の縞は等高線」「見えにくいものを見えるようにしてから測る」「自然が作る規則構造は工業検査と同じ道具で測れる」。