9cubed
ブログ | Tailwind | Vite | Python | Node.js | Linux | PowerShell | その他 | 将棋ウォーズ | 歌の練習
メモ帳作成講座

第27回 画像の明るさ調整

公開日:2019-02-26
更新日:2019-05-14

1. 概要

画像ビューアーで、明るさの調整が行えるようにしました。
また、機能的には使えるようになっていませんが、
動画では、白黒、セピア、ネガポジ反転、ぼかしなどの画像加工方法についても説明しています。

2. 動画



3. 説明

1. 画像の明るさの変更方法

画像(Bitmap)から1ピクセルずつ色を取得して、各要素(RGB)の値を増やして画像に戻すと、画像が明るくなります。 逆に、色を減らしていくと、画像が暗くなります。

画像の色の取得には Bitmap.GetPixel()、色の設定には Bitmap.SetPixel() で行うことができますが、かなり重いため、 今回は画像のメモリに直接アクセスして、取得と設定を行っています。

画像のメモリにアクセスするには、Bitmap.LockBits() を使います。
戻り値の BitmapData から画像の先頭アドレスが取得できるので、あとはポインターを使ってアクセスできます。
ポインターを使う時は、unsafe { } の中に処理を書く必要があります。
また、プロジェクトのプロパティのビルドにある、「アンセーフ コードの許可」にチェックを入れる必要があります。

2. 画像を白黒にする

RGB の各値を合算して 3 で割り平均値を出します。
あとは平均値を RGB の各値に設定すると、白黒になります。

3. 画像をセピア調にする

画像を1度白黒にして、茶色の RGB の比率になるような係数をかけると、セピア調になります。
ソースでは、B * 0.6、G * 0.8、R * 1 にしています。

4. 画像をネガポジ反転にする

RGB の各値に対して、0xff との排他的論理和(^) の値を色として設定すると、ネガポジ反転になります。

排他的論理和は2進数で計算を行い、値が同じ場合は 0、異なる場合は 1 となります。
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0

桁数が増えても同じです。
00001111 ^ 11111111(0xff) = 11110000

片方に全て 1 を指定すると、値が反転します。
これを RGB の各値に対して行うと、ネガポジ反転になります。

5. 画像をぼかす

対象ピクセルの周辺にある RGB の各値の平均値を設定すると、ぼけたようになります。
また、単純な平均値を使うのではなく、周辺の値に重みを付けて計算するガウシアンぼかしと言う方法もあります。

4. 画面

画像1

画像2

画像3

画像4

画像4

ダウンロード

ver実行ファイルソース
1.1.11
2019/02/26
ncm_1_1_11.zipncm_1_1_11_src.zip


YouTube X

新着一覧

  • SCSS のインストールVite
  • Tailwind CSS のプロジェクトの作成Tailwind
  • TypeScriptのプロジェクトの作成Vite
  • Flask のインストールと動作確認Python
  • 簡易Webサーバーの作成Python
  • pipeline で文章の生成Python
  • pipeline で文章の要約Python
  • 音声から文字起こしPython
  • Node.js のインストールNode.js
  • .ps1(PowerShellスクリプト)を実行可能にするPowerShell

アーカイブ

  • 2025/12
  • 2025/11
  • 2025/10
  • 2025/09
  • 2025/08

以前のカテゴリー一覧

  • CakePHP3
  • CentOS7
  • HTML・CSS・JavaScript
  • Haskell
  • JavaScript
  • Kotlin
  • Laravel5
  • PHP
  • Python
  • Ruby
  • RubyOnRails5
  • TypeScript
  • Vue.js
  • Webサーバ講座
  • Webプログラミング講座
  • jQuery
  • linux
  • パソコン講座
  • ブログ
  • プログラミング講座
  • メモ帳作成講座
  • 数学

Copyright © 9cubed. All Rights Reserved.

プライバシーポリシー 利用規約
▲