Увеличение резкости изображения с использованием оператора Лапласа - 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д