Увеличение резкости изображения с использованием оператора Лапласа - C#
Формулировка задачи:
Люди добрые, нужна помощь в исправлении кода для обработки изображения (увеличение резкости с использованием оператора Лапласа). Не могу сделать ссылку кнопки на рабочую часть программы "Laplas", вылезет ошибка: "Ни одна из перегрузок метода "Laplas" не принимает "0" аргументов". Как записать кнопку "button2"??
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing.Imaging; namespace Резкость_на_Лапласе { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } //Написал фильтр увеличения резкости на основе оператора Лапласа public Bitmap Laplas(Bitmap src) { Bitmap dest = (Bitmap)src.Clone(); BitmapData srcData = src.LockBits(new Rectangle(0, 0, src.Width, src.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); BitmapData destData = dest.LockBits(new Rectangle(0, 0, dest.Width, dest.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); IntPtr srcScan0 = srcData.Scan0; IntPtr destScan0 = destData.Scan0; int stride = destData.Stride; int strideX2 = stride * 2; int offset = stride - src.Width * 3; int startY = 0; int startX = 0; int endY = src.Height - 1; int endX = src.Width - 1; double pixel = 0; unsafe { byte* pSrc = (byte*)(void*)srcScan0; byte* pDest = (byte*)(void*)destScan0; for (int i = startY; i < endY; i++) { for (int j = startX; j < endX; j++) { pixel = 5 * pSrc[3 + stride] - (pSrc[3] + pSrc[0 + stride] + pSrc[6 + stride] + pSrc[3 + strideX2]); if (pixel > 255) pixel = 255; if (pixel < 0) pixel = 0; pDest[3 + stride] = (byte)pixel; pixel = 5 * pSrc[4 + stride] - (pSrc[4] + pSrc[1 + stride] + pSrc[7 + stride] + pSrc[4 + strideX2]); if (pixel > 255) pixel = 255; if (pixel < 0) pixel = 0; pDest[4 + stride] = (byte)pixel; pixel = 5 * pSrc[5 + stride] - (pSrc[5] + pSrc[2 + stride] + pSrc[8 + stride] + pSrc[5 + strideX2]); if (pixel > 255) pixel = 255; if (pixel < 0) pixel = 0; pDest[5 + stride] = (byte)pixel; pSrc += 3; pDest += 3; } pSrc += offset; pDest += offset; } } src.UnlockBits(srcData); dest.UnlockBits(destData); GC.Collect(); return dest; } private void button2_Click(object sender, EventArgs e) { Laplas(); } } }
Решение задачи: «Увеличение резкости изображения с использованием оператора Лапласа»
textual
Листинг программы
Laplas();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д