0

Dilation プロセスは、画像 A に構造要素 B を配置し、畳み込みと同様の方法で画像上をスライドさせることによって実行されます。

グレースケール画像の数学的形態膨張の背後にある主な概念を理解していますが、まだ1つの質問があります:

構造要素の値をユーザーが選択できないようにすることはできますか? つまり、構造要素の要素を指定せずに、サイズと形状を選択するだけで、画像の膨張処理を実行できますか?

より正確にするために、例を使って私の質問をよく説明します。サイズ 8 x 8 の近傍によって処理される (この場合は膨張する)Iサイズのグレースケール画像を想定160 x 160します。この近傍の要素を指定しなかったので、それらの要素は画像自体からのものです。たとえば、以下の matlab コードを書きました。

Max_image = max_filter(I, [0 0 7 7]);

関数max_filterは次のとおりです。

[n m] = size(I); % n=160 and m=160
B = I; 
for i = 1:m-7,
    B(:,i) = max(I(:,i:i+7),[],2);
  end

 for i=m-7+1:m
    B(:,i) = max(I(:,i:min(end,i+7),[],2);
  end

 for i = 1:n-7,
    I(i,:) = max(B(max(1,i):min(end,i+7),:),[],1);
  end

  for i = n-7+1:n,
    I(i,:) = max(B(i:min(end,i+7),:),[],1);
  end

それはまだ形態学的拡張操作と見なされますか? サイズ 8 x 8 の構造要素を使用したことを思い出してください。

4

1 に答える 1

2

ones(8)あなたのプログラムは、 (ところで、入力引数 [0 0 7 7] を使用しなかったので、実際には必要ありません)の構造要素を使用した完全な画像拡張と同等です。

I = [92    99     1     8    15    67    74    51    58    40
     98    80     7    14    16    73    55    57    64    41
      4    81    88    20    22    54    56    63    70    47
     85    87    19    21     3    60    62    69    71    28
     86    93    25     2     9    61    68    75    52    34
     17    24    76    83    90    42    49    26    33    65
     23     5    82    89    91    48    30    32    39    66
     79     6    13    95    97    29    31    38    45    72
     10    12    94    96    78    35    37    44    46    53
     11    18   100    77    84    36    43    50    27    59];

Max_image = max_filter(I, [0 0 7 7])あなたに与える:

    99    99    97    97    97    75    75    75    72    72
    98    97    97    97    97    75    75    75    72    72
   100   100   100    97    97    75    75    75    72    72
   100   100   100    97    97    75    75    75    72    72
   100   100   100    97    97    75    75    75    72    72
   100   100   100    97    97    72    72    72    72    72
   100   100   100    97    97    72    72    72    72    72
   100   100   100    97    97    72    72    72    72    72
   100   100   100    96    84    59    59    59    59    59
   100   100   100    84    84    59    59    59    59    59

使用している場合:

J1=imdilate(I,ones(8),'full');
J1(8:end,8:end)

まったく同じ答えが得られます。

そのため、昨日、構造要素としてバイナリ イメージ マスクを使用することが多いと言いました。マスク内の値を選択する必要はありませんが、サイズ (8*8) と形状を選択する必要があります。形状とは バイナリ イメージでは、1 で埋められた要素が形状を決定します。このコードでは、8*8 の領域内で最大値を選択しました。これは、明るい 8*8 の正方形のマスク全体を使用した画像の膨張に相当します。

于 2013-12-30T01:52:59.113 に答える