2017-05-28 6 views
0

私は3x3カーネルで画像フィルタリングを計算するのに使用できる独自のmatlab関数を実装しようとしています。 function [output_args] = fFilter(img、mask) ここで、imgは元の画像でマスクはカーネルです(たとえば、B = [1,1,1; 1,4,1]など) 1; 1,1,1])画像フィルタリング用のMATLAB関数

Image Processing Toolboxの組み込み関数を使用することは想定されていません。私はこのformula

ここで使用する必要が

:フィルタ

Mカーネル

nは前フィルタ

pが画像である後

sが画像でありますsum(sum(M))== 0 else N = sum(sum(M))

私はMATLABに新たなんだ、これが私-_-

答えて

0

これが作業を行う必要があります(確認しなかった)のために黒魔術のようなものです:上記

function [ mO ] = ImageFilter(mI, mMask) 
%UNTITLED2 Summary of this function goes here 
% Detailed explanation goes here 

numRows = size(mI, 1); 
numCols = size(mI, 2); 

% Assuming Odd number of Rows/Columns 
maskRadius = floor(siez(mMask, 1)/2); 

sumMask = sum(mMask(:)); 

if(sumMask ~= 0) 
    mMask(:) = mMask/sumMask; 
end 

mO = zeros([numRows, numCols]); 

for jj = 1:numCols 
    for ii = 1:numRows 
     for kk = -maskRadius:maskRadius 
      nn = kk + 1; %<! Mask Index 
      colIdx = min(max(1, jj + kk), numCols); %<! Replicate Boundary 
      for ll = -maskRadius:maskRadius 
       mm = ll + 1; %<! Mask Index 
       rowIdx = min(max(1, ii + ll), numRows); %<! Replicate Boundary 
       mO(ii, jj) = mO(ii, jj) + (mMask(mm, nn) * mI(rowIdx, colIdx)); 
      end 
     end 
    end 
end 


end 

は古典的な相関関係にある(画像フィルタリング)とReplicate Boundary Conditionを使用します。

関連する問題