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

4 ビュー (過去 30 日間)
裕大 豊永
裕大 豊永 2022 年 1 月 28 日
コメント済み: 裕大 豊永 2022 年 1 月 30 日
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 件のコメント
Hernia Baby
Hernia Baby 2022 年 1 月 28 日
impixelについて
読み込んでいるデータ型は uint8 or double でしょうか?
class(Inimage)
で確認してもらえますか?
関数認識されないについて
認識されているかもしれませんので確認したいです
getPixelInfoString の中身で最後に
disp('test')
を入れてみてくれませんか?

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

採用された回答

Hernia Baby
Hernia Baby 2022 年 1 月 30 日
編集済み: Hernia Baby 2022 年 1 月 30 日
関数の中身がわからないので、以下は推測になります。
サンプルとして愛犬を使います。
■同じ数字になる
おそらく読み込んでいる画像がグレースケールです。
画像をカラーで読み込みます。
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 件のコメント
裕大 豊永
裕大 豊永 2022 年 1 月 30 日
おっしゃるとおりグレースケールで画像表示されていました。
ということはDNG画像をカラー画像として読み込むことができれば、解決できそうですね。
ありがとうございます。

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

その他の回答 (0 件)

タグ

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!