画像のソースはわかりませんが、PNGファイルには解像度をエンコードするヘッダーフィールドがあります。この情報を得るには、関数imfinfo
を使用することができます。ここ
>> info = imfinfo('czYGP.png')
info =
struct with fields:
Filename: 'czYGP.png'
FileModDate: '08-May-2017 15:00:13'
FileSize: 1275
Format: 'png'
FormatVersion: []
Width: 266
Height: 280
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: [137 80 78 71 13 10 26 10]
Colormap: []
Histogram: []
InterlaceType: 'none'
Transparency: 'none'
SimpleTransparencyData: []
BackgroundColor: []
RenderingIntent: 'perceptual'
Chromaticities: [0.3127 0.3290 0.6400 0.3300 0.3000 0.6000 0.1500 0.0600]
Gamma: 0.4545
XResolution: 3779
YResolution: 3779
ResolutionUnit: 'meter'
XOffset: []
YOffset: []
OffsetUnit: []
SignificantBits: []
ImageModTime: []
Title: []
Author: []
Description: []
Copyright: []
CreationTime: []
Software: []
Disclaimer: []
Warning: []
Source: []
Comment: []
OtherText: []
興味深いフィールドは'XResolution'
と'YResolution'
、両方'meter'
ある'ResolutionUnit'
あたりのピクセル数、である:あなたのイメージのために、これは私が得るものです。この情報を使用して、私たちはあなたのイメージのためのピクセルサイズを計算することができます
carea = nnz(C)*prod(pixelSize);
:
pixelSize = 100./[info.XResolution info.YResolution]; % In cm/pixel
pixelSize = 1000./[info.XResolution info.YResolution]; % In mm/pixel
さて、あなたがしなければならないすべてはそうのように、あなたは画素領域によって得る任意の領域の測定を掛けています注:もちろん、このヘッダー情報は、デフォルト値だけでなく、任意の時点で任意に設定または変更された適切な値に設定されていることを前提としています。これは、画像のソースが重要であり、信頼できる場合(一部の医用画像機器やソフトウェアの場合など)です。
単純に、参照サイズのグリッドに対して入力を較正し、このようなpxサイズの直接変換を[mm^2]に使用します。 – user3666197
申し訳ありません。理解できない。コードはありますか?手動で測定すべきですか? @ user3666197 –
オブジェクト平面内のピクセルの大きさを知る必要があります。そのサイズを取得する最も簡単な方法は、既知のサイズのものをキャプチャし、ピクセルを数えて変換係数を取得することです。 – Piglet