PyQt で画像のビューアを作る 11 version 6
:追加された部分
:削除された部分
(差分が大きい場合、文字単位では表示しません)
PyQt で画像のビューアを作る 11
190708
# ホワイトポイント補正
- ホワイトポイント補正を実装してみた
現状でも結構補正できてるんだけど、PhotoLineで多用している、画像の任意の点の色を白に設定する機能を試してみた
PhotoShoにもあるけど、ロジックは調べてもあんまり出てこなかったので想像でやってみたがほぼ同じに出来たと思う
- ロジックは、任意のポイントのRGBを取得して、その値を255まで伸ばす。同じ比率で全てのピクセルを伸ばすもの
カーブをつけると大変なので直線で伸ばすことにすればテーブルを作るのは簡単
疑問は、rの200を255に伸ばすとすると、201以上の既存の色情報は全て255になってしまい、つまり色情報が失われるが、それでいいのかってこと
- でもやってみたらPhotoLineとほぼ同じ仕上がりだったので良いのだと思う
- **色調の補正って失われる色情報はやむを得ない**んだろうか?
ヒストグラムを表示するようにしていると、色情報が失われてグラフが乱れるのがはっきりわかるのでちょっと悩ましい
- これをやると色合いは良くなるんだけど255が増えるから白つぶれが目立つようになる
PhotoLineではそのあとでHSVのVを下げてつぶれを減らしてから再度カーブでゆるく上げていた
でもそれはやってみたけど結構難しくてまだ出来てません┐('д')┌
- 変換テーブルはリスト内包表記で作る
変換後の上限を255にする辺りは if..else が必要だが、すっきりと表記できて使い出すとやめられないな
これって**三項演算子の記述に似てますね**
---
190709
# 色相補正 ヒストグラムの頂点を合わせる
- 三色毎にヒストグラムが最大値となるRGBを取得して、そこのRGB値が等しくなるような補正ルーチンを実装してみた
- 実装自体は成功したが出来上がった画像は残念な結果だったのでこのルーチンは諦めることにした
- 画像を補正して良い色合いになったときは、RGBの山がほぼ同じ位置に来ることがわかってきた
それを機械的にやろうとの発想で、考え方としてはそんなに間違ってないと思う
- 画像はいろいろでヒストグラムもいろいろ
三色とも綺麗な三角の山で、頂上の位置がずれてるだけの画像ならこの仕組みでうまく補正できると思う
でも結構ギザギザでどこが頂点かわかりづらい画像もある
頂点位置を探すのはプログラム的には簡単だけど、そこで補正することが良いのかどうか?
- さらに補正も頂上を中点とした直線の補正(一次)にしたのもおかしかったかもしれない
曲線の方が良いよな、多分
- でも頂点の位置を求めるという発想がそもそも間違ってたように思うのでこのルーチンは捨てる
- まあ勉強にはなったからいいや( ´∀`)
# もろもろ
- ホワイトポイント機能は結構良い
色取得後にHSVに変換しての value 操作はうまくいった
どうせなら三要素全て動かせるようにするか??
- ヒストグラムの表示を修正
補正後の画像でRGB値が飛ぶとギザギザになって凄く見づらいので、RGB値がゼロのときは無視するような仕組みにしてみた
少し見やすくなった
- 取得した色を表示できるように小さな正方形のframeを配置して色を塗れた
ただ変更できない┐('д')┌
単純な描画のはずだがwidgetの塗りつぶしって結構面倒だな
----
→ [目次に戻る PyQt で画像のビューア](https://mimemo.io/m/QORbW4qkvOoda0N)
→ [戻る PyQt で画像のビューア](https://mimemo.io/m/QORbW4qkvOoda0N)
190708
ホワイトポイント補正
- ホワイトポイント補正を実装してみた
現状でも結構補正できてるんだけど、PhotoLineで多用している、画像の任意の点の色を白に設定する機能を試してみた
PhotoShoにもあるけど、ロジックは調べてもあんまり出てこなかったので想像でやってみたがほぼ同じに出来たと思う - ロジックは、任意のポイントのRGBを取得して、その値を255まで伸ばす。同じ比率で全てのピクセルを伸ばすもの
カーブをつけると大変なので直線で伸ばすことにすればテーブルを作るのは簡単
疑問は、rの200を255に伸ばすとすると、201以上の既存の色情報は全て255になってしまい、つまり色情報が失われるが、それでいいのかってこと - でもやってみたらPhotoLineとほぼ同じ仕上がりだったので良いのだと思う
- 色調の補正って失われる色情報はやむを得ないんだろうか?
ヒストグラムを表示するようにしていると、色情報が失われてグラフが乱れるのがはっきりわかるのでちょっと悩ましい - これをやると色合いは良くなるんだけど255が増えるから白つぶれが目立つようになる
PhotoLineではそのあとでHSVのVを下げてつぶれを減らしてから再度カーブでゆるく上げていた
でもそれはやってみたけど結構難しくてまだ出来てません┐('д')┌ - 変換テーブルはリスト内包表記で作る
変換後の上限を255にする辺りは if..else が必要だが、すっきりと表記できて使い出すとやめられないな
これって三項演算子の記述に似てますね
190709
色相補正 ヒストグラムの頂点を合わせる
- 三色毎にヒストグラムが最大値となるRGBを取得して、そこのRGB値が等しくなるような補正ルーチンを実装してみた
- 実装自体は成功したが出来上がった画像は残念な結果だったのでこのルーチンは諦めることにした
- 画像を補正して良い色合いになったときは、RGBの山がほぼ同じ位置に来ることがわかってきた
それを機械的にやろうとの発想で、考え方としてはそんなに間違ってないと思う - 画像はいろいろでヒストグラムもいろいろ
三色とも綺麗な三角の山で、頂上の位置がずれてるだけの画像ならこの仕組みでうまく補正できると思う
でも結構ギザギザでどこが頂点かわかりづらい画像もある
頂点位置を探すのはプログラム的には簡単だけど、そこで補正することが良いのかどうか? - さらに補正も頂上を中点とした直線の補正(一次)にしたのもおかしかったかもしれない
曲線の方が良いよな、多分 - でも頂点の位置を求めるという発想がそもそも間違ってたように思うのでこのルーチンは捨てる
- まあ勉強にはなったからいいや( ´∀`)
もろもろ
- ホワイトポイント機能は結構良い
色取得後にHSVに変換しての value 操作はうまくいった
どうせなら三要素全て動かせるようにするか?? - ヒストグラムの表示を修正
補正後の画像でRGB値が飛ぶとギザギザになって凄く見づらいので、RGB値がゼロのときは無視するような仕組みにしてみた
少し見やすくなった - 取得した色を表示できるように小さな正方形のframeを配置して色を塗れた
ただ変更できない┐('д')┌
単純な描画のはずだがwidgetの塗りつぶしって結構面倒だな