png形式の画像をi​mreadで読み込も​うとするが、R成分し​か読み込めない。

10 views (last 30 days)
蓮 中村
蓮 中村 on 25 Jun 2020
Commented: 蓮 中村 on 26 Jun 2020
png形式の画像ファイルをimreadを使用して読み込もうとしているのですが、R成分しか読み込めません。
具体的には、以下の様なコードを実行すると、「インデックスが行列の次元を超えています」と表示されます。
imageRGB = imread('ABC.png')
imageR= imageRGB(:,:,1);
imageG= imageRGB(:,:,2); -----------------------------ここ
imageB= imageRGB(:,:,3);
実際にwhos imageRGBを行っても、Sizeが6814×4768だけとなっており、R成分しか読み込めてないことが確認されました。
これを、windowsのペイントでbmp24ビット形式に変換すると、問題なくG,B成分も読み込めます。画像が大量にあるため、全て変換するのは困難なので、png形式のまま3平面とも読み込む方法はありますでしょうか。
ちなみに、imfinfoを行うと以下の様に表示されます。
Filename: '/home/rnakamura19/matlab_src/samples/Sample/20190123/Gra_x0.bmp_1.png'
FileModDate: '24-Jun-2020 18:54:37'
FileSize: 36363
Format: 'png'
FormatVersion: []
Width: 4768
Height: 6814
BitDepth: 8
ColorType: 'indexed'
FormatSignature: [137 80 78 71 13 10 26 10]
Colormap: [35x3 double]
Histogram: []
InterlaceType: 'none'
Transparency: 'none'
SimpleTransparencyData: []
BackgroundColor: 1
RenderingIntent: []
Chromaticities: [0.3127 0.3290 0.6400 0.3300 0.3000 0.6000 0.1500 0.0600]
Gamma: 0.4545
XResolution: []
YResolution: []
ResolutionUnit: []
XOffset: []
YOffset: []
OffsetUnit: []
SignificantBits: []
ImageModTime: '23 Jan 2019 20:42:04 +0000'
Title: []
Author: []
Description: []
Copyright: []
CreationTime: []
Software: []
Disclaimer: []
Warning: []
Source: []
Comment: []
OtherText: {2x2 cell}

Accepted Answer

Shunichi Kusano
Shunichi Kusano on 25 Jun 2020
こんにちは
ColorTypeを見ると、indexedとなってますのでこちらはインデックス付きの画像です。この場合ファイルの中身はRGBそれぞれの輝度が保存されているわけではなく、各画素にはインデックス(IDみたいなもの)が振られていて、各インデックスには固有のRGBが割当てられています。インデックスとRGBの対応関係はColormapで定義されています。なので、RGB画像にするには、インデックス→RGBの変換が必要になります。なんでこんな回りくどいことをするかというと、たぶんファイルサイズを小さくするためです。
前置きが長くなりましたが、コードとしては次のようになります。
[img,cmap] = imread('test.png'); % index付き画像とカラーマップの読み込み
img = ind2rgb(img, cmap); % rgbに変換
  3 Comments
蓮 中村
蓮 中村 on 26 Jun 2020
ご指示いただいた通りに実行したところ、無事読み込めました。
わかりやすい解説まで本当に有難うございます。助かりました。。
蓮 中村
蓮 中村 on 26 Jun 2020
わざわざ調べていただき、有難うございます。
教えていただいたページ、参考にさせていただきます。

Sign in to comment.

More Answers (0)

Categories

Find more on イメージ in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!