2017-05-08 4 views
1

私は、別個のサイズのBLOBを含むバイナリイメージを持っています。
Input Image
enter image description here
Iは、白画素の数を算出nnz()使用面積を計算することができます。バイナリイメージでミリメートル、ミリメートルのBLOBサイズを計算するには?

% my code 
C  = imread('InputImage'); 
C  = im2bw(C); 
carea = nnz(C); 
disp(carea); 
% 

しかし、私はセンチメートルまたはミリメートルでその値を知りたいと思います。

可能ですか?

どのようにですか?

+0

単純に、参照サイズのグリッドに対して入力を較正し、このようなpxサイズの直接変換を[mm^2]に使用します。 – user3666197

+0

申し訳ありません。理解できない。コードはありますか?手動で測定すべきですか? @ user3666197 –

+1

オブジェクト平面内のピクセルの大きさを知る必要があります。そのサイズを取得する最も簡単な方法は、既知のサイズのものをキャプチャし、ピクセルを数えて変換係数を取得することです。 – Piglet

答えて

1

イメージ内のオブジェクトのサイズを推定/計算する方法があります。

デジタル画像自体が唯一の情報である場合は、わかりません。そうでなければ、あなたは「空間的な校正係数」、既知のサイズとまもなく、あなたのイメージカメラに同じ距離を持つオブジェクトを取得し、センチメートルあたりのピクセルを取得する必要があり、長い答えを見つけることができる:通常

https://www.mathworks.com/matlabcentral/answers/56087-how-can-i-find-the-spatial-calibration-factor

そのようなタスクはオブジェクトのセグメンテーションとローカライゼーションを必要としますが、問題のイメージでは常にバイナリであり、白いオブジェクトが1つしかないと仮定します。今、あなたも知っておく必要があります、あなたの測定の精度は、離散化誤差によって制限されます。例えば、カメラの位置に関して10.49メートルから10.49メートルの正方形の写真を撮ると、非常に低い解像度(例えば100ピクセル、10ピクセル)のオブジェクトの写真では、最大0.5メートルの誤差が優先され、各2次元で49センチメートル、バイナリデジタル画像では、このエラーを取り除くためにできることはあまりありません。

1

画像のソースはわかりませんが、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 

さて、あなたがしなければならないすべてはそうのように、あなたは画素領域によって得る任意の領域の測定を掛けています注:もちろん、このヘッダー情報は、デフォルト値だけでなく、任意の時点で任意に設定または変更された適切な値に設定されていることを前提としています。これは、画像のソースが重要であり、信頼できる場合(一部の医用画像機器やソフトウェアの場合など)です。

関連する問題