グレースケール画像の輝度値のみを変更する方法

20 ビュー (過去 30 日間)
Natsumi Nakatani
Natsumi Nakatani 2020 年 1 月 17 日
コメント済み: Natsumi Nakatani 2020 年 1 月 20 日
グレースケールに変換した画像の輝度値をある式(例えば、y=2X+1)に投入し、算出したyの値に変換した画像を作りたいと思っています。
変更範囲は画像全体の場合と特定の箇所(複数のピクセル)の場合の2パターンを考えています。
どのようにしたら良いでしょうか。ご回答いただけると幸いです。

採用された回答

Kenta
Kenta 2020 年 1 月 17 日
こんにちは、画像の変数Iも行列と同様に、.*(ドットと掛け算)を用いて各要素をそのまま掛け算できます。
ある場所にしたかったら、下のような書き方をすれば範囲を指定できるので、同様にすれば指定の範囲だけ計算できます。
imtool(対象画像の変数名)でピクセルの情報などが読めるので、それを利用して位置を定めてもよいかもしれません。
result.PNG
clear;clc
I=imread('onion.png');
I2=I.*2+1;
figure;imshow(I2)
imtool(I)
I3=I;
h1=50;
h2=100;
w1=30;
w2=90;
I3(h1:h2,w1:w2,:)=I3(h1:h2,w1:w2,:).*2+1;
figure;imshow(I3)
  3 件のコメント
Kenta
Kenta 2020 年 1 月 20 日
参考になり、よかったです。arrayfunを使えばできます。
例えば以下のようです。
result.PNG
a=randi(10,[3 3])
disp('各ピクセルの値をxとすると、2のx乗+1の値を計算')
b=arrayfun(@(x) 2^x+1, a)
Natsumi Nakatani
Natsumi Nakatani 2020 年 1 月 20 日
早速ご回答いただきありがとうございます。おかげ様でできました。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeイメージ ビューアー アプリを使用した対話型調査 についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!