ホームページ  >  記事  >  バックエンド開発  >  ガウス ブラーの実装により奇妙な出力が生成される

ガウス ブラーの実装により奇妙な出力が生成される

WBOY
WBOY転載
2024-02-11 09:20:081190ブラウズ

ガウス ブラーの実装により奇妙な出力が生成される

php Xiaobian Yuzai 氏は、ガウスぼかしは画像をぼかすことができる一般的な画像処理テクノロジであり、写真を美しくしたり特殊効果を実現したりするためによく使用されると指摘しました。ただし、ガウスぼかしアルゴリズムが正しく実装されていない場合、奇妙な出力が生成される可能性があります。これには、画像の歪み、ぼやけたエッジ、色のずれなどの問題が含まれる場合があります。したがって、ガウス ブラー テクノロジを使用する場合は、期待される出力効果を確保するためにアルゴリズムの正しい実装に注意を払う必要があります。

質問内容

golangのimage.imageオブジェクトにガウスブラーを実装しようとしています。次の画像の場合:

生成された出力画像は次のとおりです。

ご覧のとおり、出力イメージには、エッジを処理しないという現在の実装の決定に対応する未処理の境界がいくつか含まれています。これは、何らかの方法で計算を台無しにした可能性があると考えさせます (はい、この部分はこの実装は機能するため、画像ピクセルを反復処理するときに off-by-one エラーを破棄できます)。このコードを何度も確認しましたが、エラーが見つかりません。私の問題を解決するのに役立つ可能性がある実装に関して、いくつかの助けと考慮をいただければ幸いです。コードは以下に含まれています。編集や説明が必要な場合は、お知らせください。

リーリー ######編集######

rgbaimg

    の代わりに元の画像からピクセルを読み取るようにコードを変更しました。
  • カーネルを正規化するために sum 変数をすでに使用しているため、
  • applygaussianfunction
  • 関数の efactor にも注釈を付けました。 64 ビット rgba 構造を使用するように .set メソッドを変更しました
  • これは新しく生成された画像です これらの黒い境界線は修正するのが簡単です。すでに修正中です。これはもはや問題の一部ではありません。
回避策

書き込み先と同じイメージから読み取りを行っています。元の画像から読み取る必要があります:

リーリー ######編集:### さらに、

image.at

color.rgba

を返しますが、

func (color.rgba) rgba

は 0 から 0xffff までの範囲 を返します。ただし、color.rgba コンストラクターでは、値が 0 ~ 255 の範囲内であることが想定されます。結果を書き込むときは、color.rgba64 を使用するとよいでしょう: リーリー

以上がガウス ブラーの実装により奇妙な出力が生成されるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。