Processing:Примеры/Обнаружение границ объектов: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Нет описания правки
 
(не показаны 2 промежуточные версии 1 участника)
Строка 1: Строка 1:
{{Processing панель перехода}}
{{Processing панель перехода}}
{{Перевод от Сubewriter}}
{{Перевод от Сubewriter}}
{{Myagkij-редактор}}
{{Myagkij-редактор}}
{{Черновик}}


=Описание<ref>[https://processing.org/examples/edgedetection.html processing.org - Edge Detection]</ref>=
=Описание<ref>[https://processing.org/examples/edgedetection.html processing.org - Edge Detection]</ref>=
Строка 85: Строка 82:
}}
}}


<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS" enclose="div">
<syntaxhighlight lang="c" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS">
float[][] kernel = {{ -1, -1, -1},  
float[][] kernel = {{ -1, -1, -1},  
                     { -1,  9, -1},  
                     { -1,  9, -1},  
Строка 145: Строка 142:
<references />
<references />


{{SEO
{{Навигационная таблица/Портал/Processing}}
|Заголовок статьи=Processing: Обнаружение границ объектов / Онлайн справочник - wikihandbk.com
|Ключевые слова=processing,Обнаружение границ объектов ,Обнаружение границ объектов в processing, пример , пример Обнаружение границ объектов в processing
|Описание статьи=
|Изображение статьи для Open Graph=
|Адрес страницы для schemaNewsArticle=<nowiki>http://wikihandbk.com/wiki/Processing:Примеры/Обнаружение границ объектов</nowiki>
|Изображение статьи для schemaNewsArticle=<nowiki></nowiki>
|Высота изображения статьи для schemaNewsArticle=
|Ширина изображения статьи для schemaNewsArticle=
|Дата публикации для schemaNewsArticle=2018-07-31
|Автор=Мякишев Е.А.
|Издатель=myagkij
|Логотип издателя для schemaNewsArticle=<nowiki>http://wikihandbk.com/ruwiki/images/6/61/Tech_geek_logo_1x.jpg</nowiki>
|Ширина логотипа издателя для schemaNewsArticle=60
|Высота логотипа издателя для schemaNewsArticle=45
}}
{{Навигационная таблица/Справочник языка Processing}}
{{Навигационная таблица/Processing/Примеры}}
{{Навигационная таблица/Телепорт}}

Текущая версия от 07:56, 27 августа 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Описание[1]

Высокочастотный фильтр, увеличивающий резкость изображения. Эта программа анализирует каждый пиксель изображения относительно его соседних пикселей, а затем на основе этой информации увеличивает резкость изображения.

Этот скетч в данный момент плохо работает в режиме JavaScript.

Пример

float[][] kernel = {{ -1, -1, -1}, 
                    { -1,  9, -1}, 
                    { -1, -1, -1}};
                    
PImage img;

void setup() { 
  size(640, 360);
  img = loadImage("moon.jpg"); // загружаем исходное изображение
  noLoop();
}

void draw() {
  image(img, 0, 0); // рисуем изображение на координатах (0,0) 
  img.loadPixels();
  // создаем непрозрачное изображение
  // того же размера, что и оригинал:
  PImage edgeImg = createImage(img.width, img.height, RGB);
  // при помощи двух циклов for()
  // проходим через все пиксели изображения:
  for (int y = 1; y < img.height-1; y++) {  // пропускаем верхний
                                            // и нижний края
    for (int x = 1; x < img.width-1; x++) { // пропускаем левый 
                                            // и правый края
      float sum = 0; // переменная для «суммарного цвета»,
                     // который будет присвоен пикселю-ядру
      for (int ky = -1; ky <= 1; ky++) {
        for (int kx = -1; kx <= 1; kx++) {
          // рассчитываем позицию пикселя в матрице
          // (всего этих пикселей будет 9):
          int pos = (y + ky)*img.width + (x + kx);
          // изображение монохромное,
          // поэтому красный, зеленый и синий каналы идентичны:
          float val = red(img.pixels[pos]);
          // умножаем цветовое значение пикселя
          // на значение внутри матрицы (1/9 = 0.111...),
          // а затем суммируем результаты 9 пикселей матрицы,
          // получая в результате «суммарный цвет»
          // в виде переменной «sum»:
          sum += kernel[ky+1][kx+1] * val;
        }
      }
      // задаем этот монохромный «суммарный цвет»
      // соответствующему пикселю на новом изображении:
      edgeImg.pixels[y*img.width + x] = color(sum, sum, sum);
    }
  }
  // обновляем данные внутри массива «edgeImg.pixels[]»:
  edgeImg.updatePixels();
  image(edgeImg, width/2, 0); // рисуем новое изображение
}

См.также

Внешние ссылки