impixel関数を​使用してDNG形式の​画像のRGB値を調べ​ようとしても正しい値​が返ってこない

5 views (last 30 days)
dcrowを使用して読み込んだDNG形式の画像の特定画素のRGB値を調べるために、impixel関数を使用して指定した画素のRBG値を調べようとすると、なぜかRGBそれぞれの値が同じという結果になってしまいます。
指定した画像のRGB
(100 100 100) (200 200 200)
このような結果になる(上記のRGB値は例であって実際の値ではない)
imshow関数で読み込んだDNG画像は正常に表示されるので読み込み自体は成功していると思います。
原因が分からないので、改善方法を教えていただきたいです。動作した際にエラーメッセージ等は一切表示されません。
当たり前ではありますが、読み込んでいるDNG画像は真っ黒な画像等ではなくColorCheckerを撮影したものです。
・撮影した機器のダイナミックレンジは12bit
・openraw関数はDNG形式の画像をtiff形式に変換する関数
Inimage = openRaw('Filename');%openRawという作った関数でDNG画像を読み込んでいる
imshow(100*Inimage(:,:)); %画像を表示
%調べる座標を指定
r = [562 1134]; %横
c = [614 646]; %縦
%RGB値を調べる
pixels = impixel(Inimage,r,c);
%pixels = getPixelInfoString(Inimage,r,c); %なぜか関数認識されない
disp("指定した座標のRGB値");
disp(pixels);
  1 Comment
Hernia Baby
Hernia Baby on 28 Jan 2022
impixelについて
読み込んでいるデータ型は uint8 or double でしょうか?
class(Inimage)
で確認してもらえますか?
関数認識されないについて
認識されているかもしれませんので確認したいです
getPixelInfoString の中身で最後に
disp('test')
を入れてみてくれませんか?

Sign in to comment.

Accepted Answer

Hernia Baby
Hernia Baby on 30 Jan 2022
Edited: Hernia Baby on 30 Jan 2022
関数の中身がわからないので、以下は推測になります。
サンプルとして愛犬を使います。
■同じ数字になる
おそらく読み込んでいる画像がグレースケールです。
画像をカラーで読み込みます。
photo = imread('chacha_sq.jpeg');
imshow(photo)
%調べる座標を指定
r = [562 1134]; %横
c = [614 646]; %縦
pixels = impixel(photo,r,c)
pixels = 2×3
76 85 84 170 154 120
グレースケールにします
photo2 = im2gray(photo);
imshow(photo2)
pixels2 = impixel(photo2,r,c)
pixels2 = 2×3
82 82 82 155 155 155
↑ 同じ数値になります
■関数が読み込まれない
パスが通っていない or 実行ファイルの場所にない からだと考えられます。
実行している mファイルが存在するフォルダに置くか、パスを通してください。
  1 Comment
裕大 豊永
裕大 豊永 on 30 Jan 2022
おっしゃるとおりグレースケールで画像表示されていました。
ということはDNG画像をカラー画像として読み込むことができれば、解決できそうですね。
ありがとうございます。

Sign in to comment.

More Answers (0)

Tags

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!