Skip to content

brightness/contrast: BasicOcrParam統合・SIMD実装・全OCRプラグイン対応#596

Merged
Freeesia merged 5 commits intomasterfrom
copilot/brightness-contrast-adjustments
Mar 20, 2026
Merged

brightness/contrast: BasicOcrParam統合・SIMD実装・全OCRプラグイン対応#596
Freeesia merged 5 commits intomasterfrom
copilot/brightness-contrast-adjustments

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Mar 20, 2026

brightness/contrast調整が環境変数依存でOneOCRのみに限定されていた問題を解消し、設定UI対応・SIMD最適化・全OCRプラグイン統一化を実施。

変更内容

BasicOcrParamへのパラメータ移行

  • IOcrModule.cs: BasicOcrParamBrightness(-127〜128)・Contrast(-99〜100)を追加
  • [Slidable]属性付きで設定UIのスライダーに上下限を反映
  • OneOcr.cs: 環境変数(OCR_BRIGHTNESS_WindowTranslator等)からの読み込みを削除

SIMD実装(BitmapUtility.cs)

  • AdjustBrightnessContrast(Span<byte> data, int brightness, int contrast) をAbstractionsプロジェクトに追加
  • Vector<short>ベースの固定小数点演算(×64スケール)でSIMD処理
  • BGRAのアルファチャンネルはマスクで保護(Vector.AndNot+OR復元)
  • SIMD非対応環境へのスカラーフォールバック付き
  • AllowUnsafeBlocksをAbstractionsプロジェクトに追加
// (c - 128) * contrastFixed >> 6 + offset, 中間値範囲: ±16384 (short収まる)
lo -= sub128;
lo *= contrastVec;
lo = Vector.ShiftRightArithmetic(lo, 6);
lo += offsetVec;
lo = Vector.Min(Vector.Max(lo, zeroVec), maxVec);

全OCRプラグイン対応・コピー削減

  • TesseractOcr.csWindowsMediaOcr.csにも輝度調整を追加
  • リサイズ→インプレース調整の順に統一し、ビットマップコピーを最大1回に削減
    • scale ≠ 1.0: リサイズで生成済みの新ビットマップにインプレース適用
    • scale == 1.0: SoftwareBitmap.Copy()1回のみで済む(旧実装はCloneBitmapSafe+リサイズで2回)

ローカライズ

  • BrightnessContrastのリソースエントリを21言語すべてに追加
Original prompt

This section details on the original issue you should resolve

<issue_title>brightness, contrast 調整の残作業</issue_title>
<issue_description>## 前作業

#591
#593

残作業

  • 調整パラメータを基本OCR設定に持たせる
  • UIの対応(上限下限の対応)
  • 調整ロジックをSIMDで実装する
    • ColorThiefの実装を参考にする
  • 調整ロジックをAbstractプロジェクトの画像系ユーティリティに移動
  • OneOCR以外にも調整機能を入れる
  • 画像のスケール対応と同時に処理する
    • バッファコピーを最小限にする</issue_description>

Comments on the Issue (you are @copilot in this section)


💬 Send tasks to Copilot coding agent from Slack and Teams to turn conversations into code. Copilot posts an update in your thread when it's finished.

…n BitmapUtility, update all OCR plugins

Co-authored-by: Freeesia <9002657+Freeesia@users.noreply.github.com>
Copilot AI changed the title [WIP] Implement brightness and contrast adjustments in OCR settings brightness/contrast: BasicOcrParam統合・SIMD実装・全OCRプラグイン対応 Mar 20, 2026
Copilot AI requested a review from Freeesia March 20, 2026 16:00
@Freeesia Freeesia requested review from Copilot and removed request for Freeesia March 20, 2026 16:05
@Freeesia Freeesia marked this pull request as ready for review March 20, 2026 16:05
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

brightness/contrast 調整を「環境変数+OneOCR限定」から「BasicOcrParam 統合+全OCRプラグイン共通」へ移行し、画像調整ロジックを Abstractions 側へ集約しつつ SIMD 最適化を導入するPRです(設定UIスライダー対応・コピー削減も含む)。

Changes:

  • BasicOcrParam に Brightness/Contrast を追加し、UIスライダー用の上下限を付与
  • BitmapUtility に BGRA 向けの明るさ/コントラスト調整(SIMD+フォールバック)を追加し、各OCR実装から利用
  • Brightness/Contrast の表示名リソースを多言語 .resx に追加

Reviewed changes

Copilot reviewed 27 out of 27 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
WindowTranslator/Modules/Ocr/WindowsMediaOcr.cs リサイズ後に Brightness/Contrast をインプレース適用(必要時のみコピー)
WindowTranslator.Abstractions/WindowTranslator.Abstractions.csproj SIMD/ポインタアクセスのため unsafe を許可
WindowTranslator.Abstractions/BitmapUtility.cs リサイズ拡張に加え、Brightness/Contrast 調整(SIMD/スカラー)を追加
WindowTranslator.Abstractions/Modules/IOcrModule.cs BasicOcrParam に Brightness/Contrast(Slidable付き)を追加
Plugins/WindowTranslator.Plugin.TesseractOCRPlugin/TesseractOcr.cs OCR前処理に Brightness/Contrast 調整を追加(コピー最小化)
Plugins/WindowTranslator.Plugin.OneOcrPlugin/OneOcr.cs 環境変数依存を削除し、BasicOcrParam 経由で Brightness/Contrast を適用
WindowTranslator.Abstractions/Properties/Resources.resx Brightness/Contrast リソース追加(ja)
WindowTranslator.Abstractions/Properties/Resources.en.resx Brightness/Contrast リソース追加(en)
WindowTranslator.Abstractions/Properties/Resources.de.resx Brightness/Contrast リソース追加(de)
WindowTranslator.Abstractions/Properties/Resources.fr.resx Brightness/Contrast リソース追加(fr)
WindowTranslator.Abstractions/Properties/Resources.es.resx Brightness/Contrast リソース追加(es)
WindowTranslator.Abstractions/Properties/Resources.ar.resx Brightness/Contrast リソース追加(ar)
WindowTranslator.Abstractions/Properties/Resources.cs.resx Brightness/Contrast リソース追加(cs)
WindowTranslator.Abstractions/Properties/Resources.fa.resx Brightness/Contrast リソース追加(fa)
WindowTranslator.Abstractions/Properties/Resources.fil.resx Brightness/Contrast リソース追加(fil)
WindowTranslator.Abstractions/Properties/Resources.hi.resx Brightness/Contrast リソース追加(hi)
WindowTranslator.Abstractions/Properties/Resources.id.resx Brightness/Contrast リソース追加(id)
WindowTranslator.Abstractions/Properties/Resources.ko.resx Brightness/Contrast リソース追加(ko)
WindowTranslator.Abstractions/Properties/Resources.ms.resx Brightness/Contrast リソース追加(ms)
WindowTranslator.Abstractions/Properties/Resources.pl.resx Brightness/Contrast リソース追加(pl)
WindowTranslator.Abstractions/Properties/Resources.pt-BR.resx Brightness/Contrast リソース追加(pt-BR)
WindowTranslator.Abstractions/Properties/Resources.ru.resx Brightness/Contrast リソース追加(ru)
WindowTranslator.Abstractions/Properties/Resources.th.resx Brightness/Contrast リソース追加(th)
WindowTranslator.Abstractions/Properties/Resources.tr.resx Brightness/Contrast リソース追加(tr)
WindowTranslator.Abstractions/Properties/Resources.vi.resx Brightness/Contrast リソース追加(vi)
WindowTranslator.Abstractions/Properties/Resources.zh-CN.resx Brightness/Contrast リソース追加(zh-CN)
WindowTranslator.Abstractions/Properties/Resources.zh-TW.resx Brightness/Contrast リソース追加(zh-TW)

Freeesia and others added 2 commits March 21, 2026 01:49
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Freeesia <9002657+Freeesia@users.noreply.github.com>
Copilot AI requested a review from Freeesia March 20, 2026 16:57
@Freeesia Freeesia merged commit 7983cde into master Mar 20, 2026
7 checks passed
@Freeesia Freeesia deleted the copilot/brightness-contrast-adjustments branch March 20, 2026 18:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

brightness, contrast 調整の残作業

3 participants