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

조회 수: 16 (최근 30일)
蓮 中村
蓮 中村 2020년 6월 25일
댓글: 蓮 中村 2020년 6월 26일
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}

채택된 답변

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

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 イメージ에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!