Ads by Google

¾åµ­¤Î¹­¹ð¤Ï£±¥ö·î°Ê¾å¹¹¿·¤Î¤Ê¤¤¥Ö¥í¥°¤Ëɽ¼¨¤µ¤ì¤Æ¤¤¤Þ¤¹¡£
¿·¤·¤¤µ­»ö¤ò½ñ¤¯»ö¤Ç¹­¹ð¤¬¾Ã¤»¤Þ¤¹¡£

¥é¥×¥é¥·¥¢¥ó¥Õ¥£¥ë¥¿¡¼

²èÁü¾å¤Çµ±ÅÙ¤¬µÞ·ã¤ËÊѲ½¤¹¤ë¤È¤³¤í¤ò¥¨¥Ã¥¸¤È¤¤¤¤¤Þ¤¹¡£¥¨¥Ã¥¸¤ò¸¡½Ð¤¹¤ë¤³¤È¤Ç¡¢ÎسԤΤߤÎÀþ²èÁü¤òºî¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£¥¨¥Ã¥¸¸¡½Ð¤Î¼êË¡¤Ï¡¢¤«¤Ê¤ê¤¿¤¯¤µ¤ó¤¢¤ê¤Þ¤¹¤¬¡¢¤½¤ÎÃæ¤Ç¤â£²¼¡Èùʬ¤Ç´Ë¤ä¤«¤ÊÇ»ÅÙ¸ûÇۤǤ⸡½Ð¤Ç¤­¤ë²èÁü½èÍýÊýË¡¡Ö¥é¥×¥é¥·¥¢¥ó¥Õ¥£¥ë¥¿¡¼¡×¤òC#¥×¥í¥°¥é¥à¤È¤È¤â¤Ë¾Ò²ð¤·¤Þ¤¹¡£

¥é¥×¥é¥·¥¢¥ó¥Õ¥£¥ë¥¿¡¼¤Î¥Þ¥¹¥¯¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¤â¤Î»È¤¤¤Þ¤¹¡£
0 1 0
1 -4 1
0 1 0
¤Þ¤¿¤Ï
1 1 1
1 -8 1
1 1 1

¤³¤Î¤è¤¦¤Ê²èÁü¤Ï¡¢
¥é¥×¥é¥·¥¢¥ó¥Õ¥£¥ë¥¿¡¼¤ò¤«¤±¤ëÁ°

¥Õ¥£¥ë¥¿¤¹¤ë¤È¤³¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¥é¥×¥é¥·¥¢¥ó¥Õ¥£¥ë¥¿¡¼¤ò¤«¤±¤¿¸å

[2009/2/8Äɵ­]
¤ª³¨¤«¤­¥Ä¡¼¥ë¤Ë¡¢¥é¥×¥é¥·¥¢¥ó¥Õ¥£¥ë¥¿¤òÆþ¤ì¤Æ¤ß¤Þ¤·¤¿¡£
¶½Ì£¤¢¤ëÊý¤Ï¤ª³¨¤«¤­¤ÎÊý¤â¤¼¤Ò¡ª
¤¨¤Î¤°¤Ò¤í¤Ð [http://www.enoguhiroba.net/]

C#²èÁü½èÍý¥×¥í¥°¥é¥à¤Ç¤¹¡£
// ²èÁü¤Î¥¨¥Ã¥¸¸¡½Ð
// 3x3¥é¥×¥é¥·¥¢¥ó¥Õ¥£¥ë¥¿¤ò»ÈÍѤ¹¤ë¡£
// 0 1 0
// 1 -4 1
// 0 1 0
// LoadByteImage():bmp¥Õ¥¡¥¤¥ë¤òÆÉ¤ß¹þ¤ó¤ÇÇÛÎó¤Ë³ÊǼ¤¹¤ë¥á¥½¥Ã¥É
// SaveByteImage():byteÇÛÎó¤òbmp¤ËÊݸ¤¹¤ë¥á¥½¥Ã¥É
// ImageProcessingForMask():¥Õ¥£¥ë¥¿¤ò¤«¤±¤ë¥á¥½¥Ã¥É
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Drawing.Imaging;

namespace LaplacianFilter
{
    class Program
    {
        static void Main(string[] args)
        {
            // ²èÁüÆÉ¤ß¹þ¤ß
            byte[,] data = LoadByteImage("test.bmp");

            // ¥Õ¥£¥ë¥¿¥Þ¥¹¥¯
            const int maskSize = 3;
            double[,] mask = new double[maskSize, maskSize]{
                                {0,1,0},
                                {1,-4,1},
                                {0,1,0}}
                                ;

            // ¥Õ¥£¥ë¥¿½èÍý
            byte[,] filterdata
                = ImageProcessingForMask(data, mask);

            // ²èÁüÊݸ
            SaveByteImage(filterdata, "out.bmp");
        }

        /// <summary>
        /// ¥Þ¥¹¥¯¤Ë±þ¤¸¤¿²èÁü½èÍý¼Â¹Ô
        /// </summary>
        static byte[,] ImageProcessingForMask(byte[,] inputdata,
                                                double[,] mask)
        {
            try
            {
                // ½Ä²£¥µ¥¤¥º¤òÇÛÎ󤫤éÆÉ¤ß¼è¤ê
                int xsize = inputdata.GetLength(0);
                int ysize = inputdata.GetLength(1);

                // ¥Þ¥¹¥¯¥µ¥¤¥ºÆÉ¤ß¼è¤ê
                int masksize = mask.GetLength(0);

                // ²èÁü½èÍý¸å¤Î2¼¡¸µÇÛÎó
                byte[,] filterdata = new byte[xsize, ysize];

                // ²èÁü½èÍý
                for (int i = 0; i < ysize; i++)
                {
                    for (int j = 0; j < xsize; j++)
                    {
                        double sum = 0;
                        for (int k = -masksize / 2; k <= masksize / 2; k++)
                        {
                            for (int n = -masksize / 2; n <= masksize / 2; n++)
                            {
                                if (j + n >= 0 && j + n < xsize
                                    && i + k >= 0 && i + k < ysize)
                                {
                                    sum += inputdata[j + n, i + k]
                                            * mask[n + masksize / 2,
                                                k + masksize / 2];
                                }
                            }
                        }

                        filterdata[j, i] = ConvertBytetoInt(sum);
                    }
                }
                return filterdata;
            }
            catch
            {
                Console.WriteLine("¥Õ¥£¥ë¥¿½èÍý¤¬¼Â¹Ô¤Ç¤­¤Þ¤»¤ó¡£");
                return null;
            }
        }

        /// <summary>
        /// double·¿¤òbyte·¿¤ØÊÑ´¹
        /// </summary>
        static byte ConvertBytetoInt(double num)
        {
            // num¤¬256°Ê¾å¤Ê¤é255¡¢0̤Ëþ¤Ê¤é0
            if (num > 255.0)
            {
                return 255;
            }
            else if (num < 0)
            {
                return 0;
            }
            else
            {
                return (byte)num;
            }
        }

        /// <summary>
        /// Bitmap¤ò¥í¡¼¥É¤·byte[,]ÇÛÎó¤ÇÊÖ¤¹
        /// </summary>
        static byte[,] LoadByteImage(string filename)
        {
            try
            {
                Bitmap bitmap = new Bitmap(filename);
                byte[,] data = new byte[bitmap.Width, bitmap.Height];

                // bitmap¥¯¥é¥¹¤Î²èÁü¥Ô¥¯¥»¥ëÃͤòÇÛÎó¤ËÁÞÆþ
                for (int i = 0; i < bitmap.Height; i++)
                {
                    for (int j = 0; j < bitmap.Width; j++)
                    {
                        // ¤³¤³¤Ç¤Ï¥°¥ì¥¤¥¹¥±¡¼¥ë¤ËÊÑ´¹¤·¤Æ³ÊǼ
                        data[j, i] =
                            (byte)(
                                (bitmap.GetPixel(j, i).R +
                                bitmap.GetPixel(j, i).B +
                                bitmap.GetPixel(j, i).G) / 3
                                );
                    }
                }
                return data;
            }
            catch
            {
                Console.WriteLine("¥Õ¥¡¥¤¥ë¤¬ÆÉ¤á¤Þ¤»¤ó¡£");
                return null;
            }
        }

        /// <summary>
        /// ²èÁüÇÛÎó¤òbmp¤Ë½ñ¤­½Ð¤¹
        /// </summary>
        static void SaveByteImage(byte[,] data, string filename)
        {
            try
            {
                // ½Ä²£¥µ¥¤¥º¤òÇÛÎ󤫤éÆÉ¤ß¼è¤ê
                int xsize = data.GetLength(0);
                int ysize = data.GetLength(1);

                Bitmap bitmap = new Bitmap(xsize, ysize);

                // bitmap¥¯¥é¥¹¤ÎSetPixel¤Çbitmap¥ª¥Ö¥¸¥§¥¯¥È¤Ë
                // ¥Ô¥¯¥»¥ëÃͤò¥»¥Ã¥È
                for (int i = 0; i < ysize; i++)
                {
                    for (int j = 0; j < xsize; j++)
                    {
                        bitmap.SetPixel(
                            j,
                            i,
                            Color.FromArgb(
                                data[j, i],
                                data[j, i],
                                data[j, i])
                            );
                    }
                }

                // ²èÁü¤ÎÊݸ
                bitmap.Save(filename, ImageFormat.Bmp);
            }
            catch
            {
                Console.WriteLine("¥Õ¥¡¥¤¥ë¤¬½ñ¤­¹þ¤á¤Þ¤»¤ó¡£");
            }
        }
    }
}
¤³¤Î¥Þ¥¹¥¯¤ò¤«¤±¤ë¤È²¿¤Ç¥¨¥Ã¥¸¸¡½Ð¤Ç¤­¤ë¤Î¤«¹Í¤¨¤Æ¤ß¤Þ¤·¤ç¤¦¡ª

http://csharpimage.me.land.to/LaplacianFilter.zip
Visual Studio 2008 C#¤ÇºîÀ®¤·¤¿¥½¡¼¥¹¥³¡¼¥É¤òÃÖ¤¤¤Æ¤ª¤­¤Þ¤¹¡£
COMMENT : 0
TrackBack : 0

COMMENT

Comment Form


ÈëÌ©¤Ë¤¹¤ë
¡¡

TRACKBACK

TrackBack List

¤ª¤¹¤¹¤á»²¹Í½ñ

ÆÈ½¬C# Âè2ÈÇ
NRI¥é¡¼¥Ë¥ó¥°¥Í¥Ã¥È¥ï¡¼¥¯³ô¼°²ñ¼Ò ÌðÅè Áï ³ô¼°²ñ¼Ò¥Æ¥Ã¥¯¡¦¥¤¥ó¥Ç¥Ã¥¯¥¹

ÆÈ½¬C# Âè2ÈÇ
æÆ±Ë¼Ò 2007-04-20
Çä¤ê¾å¤²¥é¥ó¥­¥ó¥° : 29888

¤ª¤¹¤¹¤áÊ¿¶Ñ star
starÇã¤Ã¤ÆÎɤ«¤Ã¤¿
starGUI¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î½¬ÆÀ¤ÏÊ̤ÎËܤÇ


¾Ü²ò ²èÁü½èÍý¥×¥í¥°¥é¥ß¥ó¥° C¸À¸ì¤Ç¼ÂÁõ¤¹¤ë²èÁü½èÍý¥¢¥ë¥´¥ê¥º¥à¤Î¤¹¤Ù¤Æ
¾»Ã£ ·Ä¿Î

¾Ü²ò ²èÁü½èÍý¥×¥í¥°¥é¥ß¥ó¥° C¸À¸ì¤Ç¼ÂÁõ¤¹¤ë²èÁü½èÍý¥¢¥ë¥´¥ê¥º¥à¤Î¤¹¤Ù¤Æ
¥½¥Õ¥È¥Ð¥ó¥¯¥¯¥ê¥¨¥¤¥Æ¥£¥Ö 2008-03-27
Çä¤ê¾å¤²¥é¥ó¥­¥ó¥° : 4291

¤ª¤¹¤¹¤áÊ¿¶Ñ star
star¤È¤Æ¤â¤ï¤«¤ê¤ä¤¹¤¯¤Æ¡¢Â¿¤¯¤Î¥¢¥ë¥´¥ê¥º¥à¤òÌÖÍ夷¤Æ¤¤¤Þ¤¹¡£


C#¤Ë¤è¤ë¥×¥í¥°¥é¥ß¥ó¥°Windows ¾å (¥Þ¥¤¥¯¥í¥½¥Õ¥È¸ø¼°²òÀâ½ñ)
Ë­ÅÄ ¹§

C#¤Ë¤è¤ë¥×¥í¥°¥é¥ß¥ó¥°Windows ¾å (¥Þ¥¤¥¯¥í¥½¥Õ¥È¸ø¼°²òÀâ½ñ)
Æü·ÐBP¥½¥Õ¥È¥×¥ì¥¹ 2002-07-15
Çä¤ê¾å¤²¥é¥ó¥­¥ó¥° : 44562

¤ª¤¹¤¹¤áÊ¿¶Ñ star
star£Ã¡ô¤Ë¤è¤ë¥×¥í¥°¥é¥ß¥ó¥° Windows¡Ö¥Õ¥©¡¼¥à¡×
star¾Ï¤Î½çÈÖ¤òÊѤ¨¤Ê¤¤¤ÇÍߤ·¤«¤Ã¤¿
star¶È̳¥¢¥×¥ê³«È¯¤Ë´Ø¤·¤Æ¤Ï¤³¤ì¤Ç½½Ê¬¤Ç¤Ï¡¦¡¦¡¦¡¦¡£


C#¤Ë¤è¤ë¥×¥í¥°¥é¥ß¥ó¥°Windows ²¼ (¥Þ¥¤¥¯¥í¥½¥Õ¥È¸ø¼°²òÀâ½ñ)
Ë­ÅÄ ¹§

C#¤Ë¤è¤ë¥×¥í¥°¥é¥ß¥ó¥°Windows ²¼ (¥Þ¥¤¥¯¥í¥½¥Õ¥È¸ø¼°²òÀâ½ñ)
Æü·ÐBP¥½¥Õ¥È¥×¥ì¥¹ 2002-07-15
Çä¤ê¾å¤²¥é¥ó¥­¥ó¥° : 44218

¤ª¤¹¤¹¤áÊ¿¶Ñ star
star£Ã¡ô¤Ë¤è¤ë¥×¥í¥°¥é¥ß¥ó¥° Windows¡Ö¥Õ¥©¡¼¥à¡×
star¾Ï¤Î½çÈÖ¤òÊѤ¨¤Ê¤¤¤ÇÍߤ·¤«¤Ã¤¿
star¶È̳¥¢¥×¥ê³«È¯¤Ë´Ø¤·¤Æ¤Ï¤³¤ì¤Ç½½Ê¬¤Ç¤Ï¡¦¡¦¡¦¡¦¡£

¾å¤Î2ºý¤ÏC#¤Ç³«È¯¤¹¤ë¾å¤Ç¤ÎɬÆÉ½ñ¤À¤È»×¤¤¤Þ¤¹¡£¹â¤¤¤±¤É¤¢¤Ã¤ÆÂ»¤Ê¤·¡ª

C#¥¨¥Ã¥»¥ó¥·¥ã¥ë¥º Âè2ÈÇ
Ben Albahari Brad Merrill Peter Drayton

C#¥¨¥Ã¥»¥ó¥·¥ã¥ë¥º Âè2ÈÇ
¥ª¥é¥¤¥ê¡¼¡¦¥¸¥ã¥Ñ¥ó 2002-07
Çä¤ê¾å¤²¥é¥ó¥­¥ó¥° : 34520

¤ª¤¹¤¹¤áÊ¿¶Ñ star
starC#¤ÎÆþÌç½ñ¤È¤·¤ÆºÇŬ
starK&R ¤Î C# ÈÇ
star¾¸À¸ì¥×¥í¥°¥é¥Þ¤Ë¤â¡£


¥Ç¥£¥¸¥¿¥ë²èÁü½èÍý¤Î´ðÁäȱþÍÑ ²þÄûÈÇ¡½Visual C#.NET&Visual Basic.NET¤Ë¤è¤ë ´ðËܳµÇ°¤«¤é (¥Ç¥£¥¸¥¿¥ë¿®¹æ½èÍý¥·¥ê¡¼¥º)
¼ò°æ ¹¬»Ô

¥Ç¥£¥¸¥¿¥ë²èÁü½èÍý¤Î´ðÁäȱþÍÑ ²þÄûÈÇ¡½Visual C#.NET&Visual Basic.NET¤Ë¤è¤ë ´ðËܳµÇ°¤«¤é (¥Ç¥£¥¸¥¿¥ë¿®¹æ½èÍý¥·¥ê¡¼¥º)
CQ½ÐÈÇ 2007-02
Çä¤ê¾å¤²¥é¥ó¥­¥ó¥° : 38780



Visual C#¼ÂÁ©¹ÖºÂ¡½ÀäÂи½¾ì¼çµÁ
´Ý²¬ ¹§»Ê

Visual C#¼ÂÁ©¹ÖºÂ¡½ÀäÂи½¾ì¼çµÁ
¥é¥È¥ë¥º 2007-08
Çä¤ê¾å¤²¥é¥ó¥­¥ó¥° : 8235

¤ª¤¹¤¹¤áÊ¿¶Ñ star
starÆþÌç½ñ¤òÆÉ¤ó¤À¸å¤Î1ºý¤È¤·¤Æ¤Ï°ì²¡¤·
star¤¤¤Þ¤É¤­¤ÎµÕ°úËÜŪ¤Ç¤Ï¤Ê¤¤¤Ç¤¹
starÉáÄÌ¤ÎÆÉ¤ßʪ¤È¤·¤ÆÌÌÇò¤¤¡ª


¥Ç¥£¥¸¥¿¥ë²èÁü½èÍý

¥Ç¥£¥¸¥¿¥ë²èÁü½èÍý
CG¡¼ARTS¶¨²ñ 2006-03-01
Çä¤ê¾å¤²¥é¥ó¥­¥ó¥° : 11503

¤ª¤¹¤¹¤áÊ¿¶Ñ star
starɸ½àÃæ¤Îɸ½à¥Æ¥­¥¹¥È
star¥°¥é¥Õ¥£¥«¥ë¤ÊËÜ
star¤è¤¯¤Ç¤­¤Æ¤¤¤ë¥Æ¥­¥¹¥È



¸¡º÷¥Õ¥©¡¼¥à


¥×¥í¥Õ¥£¡¼¥ë

´ÉÍý¿Í:¤³¤ë¤Ê¤´­·

¤Þ¤º¤Ï´ðËÜŪ¤Ê²èÁü½èÍýÃæ¿´¤Ë¥¢¥Ã¥×¤·¤Æ¤¤¤Þ¤¹¡£
¤½¤·¤Æ¡¢½ù¡¹¤Ë¹âÅÙ¤Ë

²èÁü½èÍý¤ËÌòΩ¤ÄC#¥×¥í¥°¥é¥à¤òÉý¹­¤¯¾Ò²ð¤·¤Æ¤¤¤³¤¦¤È»×¤Ã¤Æ¤¤¤Þ¤¹¡£³«È¯´Ä¶­¤Ï¼ç¤ËVisual Studio 2008¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£


¥«¥Æ¥´¥ê


¥ê¥ó¥¯

¤³¤Î¥Ö¥í¥°¤ò¥ê¥ó¥¯¤ËÄɲ乤ë


ºÇ¿·¥È¥é¥Ã¥¯¥Ð¥Ã¥¯


ºÇ¿·µ­»ö


·îÊÌ¥¢¡¼¥«¥¤¥Ö


£Ñ£Ò¥³¡¼¥É

QR


¥á¡¼¥ë¥Õ¥©¡¼¥à

̾Á°:
¤¢¤Ê¤¿¤Î¥á¡¼¥ë¥¢¥É¥ì¥¹:
·ï̾:
ËÜʸ:


Copyright © C#¤Ç²èÁü½èÍý All Rights reserved.
Designed by ¥µ¥ê¥¤¡¡¡¡Illustration by ¤Õ¤ï¤Õ¤ï¡£¤ê ¡¡ FC2¥Ö¥í¥° ¾Ò²ðͽÄêÇɸ¯