Увеличение резкости изображения с использованием оператора Лапласа - C#

Узнай цену своей работы

Формулировка задачи:

Люди добрые, нужна помощь в исправлении кода для обработки изображения (увеличение резкости с использованием оператора Лапласа). Не могу сделать ссылку кнопки на рабочую часть программы "Laplas", вылезет ошибка: "Ни одна из перегрузок метода "Laplas" не принимает "0" аргументов". Как записать кнопку "button2"??
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Drawing.Imaging;
  10. namespace Резкость_на_Лапласе
  11. {
  12. public partial class Form1 : Form
  13. {
  14. public Form1()
  15. {
  16. InitializeComponent();
  17. }
  18. private void Form1_Load(object sender, EventArgs e)
  19. {
  20. }
  21.  
  22. //Написал фильтр увеличения резкости на основе оператора Лапласа
  23. public Bitmap Laplas(Bitmap src)
  24. {
  25. Bitmap dest = (Bitmap)src.Clone();
  26. BitmapData srcData = src.LockBits(new Rectangle(0, 0, src.Width, src.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
  27. BitmapData destData = dest.LockBits(new Rectangle(0, 0, dest.Width, dest.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
  28. IntPtr srcScan0 = srcData.Scan0;
  29. IntPtr destScan0 = destData.Scan0;
  30. int stride = destData.Stride;
  31. int strideX2 = stride * 2;
  32. int offset = stride - src.Width * 3;
  33. int startY = 0;
  34. int startX = 0;
  35. int endY = src.Height - 1;
  36. int endX = src.Width - 1;
  37. double pixel = 0;
  38. unsafe
  39. {
  40. byte* pSrc = (byte*)(void*)srcScan0;
  41. byte* pDest = (byte*)(void*)destScan0;
  42. for (int i = startY; i < endY; i++)
  43. {
  44. for (int j = startX; j < endX; j++)
  45. {
  46. pixel = 5 * pSrc[3 + stride] - (pSrc[3] + pSrc[0 + stride] + pSrc[6 + stride] + pSrc[3 + strideX2]);
  47. if (pixel > 255)
  48. pixel = 255;
  49. if (pixel < 0)
  50. pixel = 0;
  51. pDest[3 + stride] = (byte)pixel;
  52.  
  53. pixel = 5 * pSrc[4 + stride] - (pSrc[4] + pSrc[1 + stride] + pSrc[7 + stride] + pSrc[4 + strideX2]);
  54. if (pixel > 255)
  55. pixel = 255;
  56. if (pixel < 0)
  57. pixel = 0;
  58. pDest[4 + stride] = (byte)pixel;
  59. pixel = 5 * pSrc[5 + stride] - (pSrc[5] + pSrc[2 + stride] + pSrc[8 + stride] + pSrc[5 + strideX2]);
  60. if (pixel > 255)
  61. pixel = 255;
  62. if (pixel < 0)
  63. pixel = 0;
  64. pDest[5 + stride] = (byte)pixel;
  65. pSrc += 3;
  66. pDest += 3;
  67. }
  68. pSrc += offset;
  69. pDest += offset;
  70. }
  71. }
  72. src.UnlockBits(srcData);
  73. dest.UnlockBits(destData);
  74. GC.Collect();
  75. return dest;
  76. }
  77. private void button2_Click(object sender, EventArgs e)
  78. {
  79. Laplas();
  80. }
  81. }
  82. }

Решение задачи: «Увеличение резкости изображения с использованием оператора Лапласа»

textual
Листинг программы
  1. Laplas();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы