첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ NO BIAS 에지 회선 적용하기

------------------------------------------------------------------------------------------------------------------------

#region NO BIAS 에지 회선 적용하기 - ConvolveEdgeNoBias(sourceArray, maskArray)

 

/// <summary>

/// NO BIAS 에지 회선 적용하기

/// </summary>

/// <param name="sourceArray">소스 배열</param>

/// <param name="maskArray">마스크 배열</param>

/// <returns>NO BIAS 에지 회선 적용 배열</returns>

public int[,] ConvolveEdgeNoBias(int[,] sourceArray, double[,] maskArray)

{

    int    sourceWidth  = sourceArray.GetUpperBound(1) + 1;

    int    sourceHeight = sourceArray.GetUpperBound(0) + 1;

    int    maskWidth    = maskArray.GetUpperBound(1) + 1;

    int    maskHeight   = maskArray.GetUpperBound(0) + 1;

    int[,] resultArray  = new int[sourceHeight, sourceWidth];

    int    xPadding     = maskWidth / 2;

    int    yPadding     = maskHeight / 2;

    double summary;

 

    for(int y = 0; y < sourceHeight - 2 * yPadding; y++)

    {

        for(int x = 0; x < sourceWidth - 2 * xPadding; x++)

        {

            summary = 0.0;

 

            for(int r = 0; r < maskHeight; r++)

            {

                for(int c = 0; c < maskWidth; c++)

                {

                    summary += sourceArray[y + r, x + c] * maskArray[r, c];

                }

            }

 

            resultArray[y + yPadding, x + xPadding] = (int)summary;

        }

    }

 

    for(int y = 0; y < yPadding; y++)

    {

        for(int x = xPadding; x < sourceWidth - xPadding; x++)

        {

            resultArray[y, x] = resultArray[yPadding, x];

 

            resultArray[sourceHeight - 1 - y, x] = resultArray[sourceHeight - 1 - yPadding, x];

        }

    }

 

    for(int x = 0; x < xPadding; x++)

    {

        for(int y = 0; y < sourceHeight; y++)

        {

            resultArray[y, x] = resultArray[y, xPadding];

 

            resultArray[y, sourceWidth - 1 - x] = resultArray[y, sourceWidth - 1 - xPadding];

        }

    }

 

    return resultArray;

}

 

#endregion

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker

댓글을 달아 주세요