Что такое код imagefilltoborder

Что такое код imagefilltoborder

Модуль ngx_http_image_filter_module (0.7.54+) — это фильтр для преобразования изображений в форматах JPEG, GIF, PNG и WebP.

По умолчанию этот модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра —with-http_image_filter_module .

Для сборки и работы этого модуля необходима библиотека libgd. Рекомендуется использовать самую последнюю версию библиотеки.

Поддержка формата WebP появилась в версии 1.11.6. Для преобразования изображений в данном формате библиотека libgd должна быть собрана с поддержкой WebP.

Пример конфигурации

Директивы

Синтаксис: image_filter off ;
image_filter test ;
image_filter size ;
image_filter rotate 90 | 180 | 270 ;
image_filter resize ширина высота ;
image_filter crop ширина высота ;
Умолчание:
Контекст: location

Задаёт тип преобразования изображения:

off отключает обработку данным модулем во вложенном location. test проверяет, что ответ действительно является изображением в формате JPEG, GIF, PNG или WebP. В противном случае возвращается ошибка 415 (Unsupported Media Type). size выдаёт информацию об изображении в формате JSON, например:

Синтаксис: image_filter_buffer размер ;
Умолчание:
Контекст: http , server , location

Задаёт максимальный размер буфера для чтения изображения. При превышении размера сервер вернёт ошибку 415 (Unsupported Media Type).

Синтаксис: image_filter_interlace on | off ;
Умолчание:
Контекст: http , server , location

Эта директива появилась в версии 1.3.15.

Если включено, то итоговые изображения будут с чересстрочностью. В случае JPEG итоговые изображения будут в формате “progressive JPEG”.

Синтаксис: image_filter_jpeg_quality качество ;
Умолчание:
Контекст: http , server , location

Задаёт желаемое качество преобразованного изображения в формате JPEG. Допустимые значения находятся в диапазоне от 1 до 100. Меньшим значениям обычно соответствует худшее качество изображения и меньший объём передаваемых данных. Максимальное рекомендуемое значение — 95. В значении параметра допустимо использование переменных.

Синтаксис: image_filter_sharpen процент ;
Умолчание:
Контекст: http , server , location

Повышает резкость итогового изображения. Процент резкости может быть больше 100. Значение 0 отключает повышение резкости. В значении параметра допустимо использование переменных.

Синтаксис: image_filter_transparency on | off ;
Умолчание:
Контекст: http , server , location

Определяет, сохранять ли прозрачность при обработке изображений в формате GIF и в формате PNG с цветами, заданными палитрой. Потеря прозрачности позволяет получить более качественное изображение. Прозрачность альфа-канала в формате PNG сохраняется всегда.

Синтаксис: image_filter_webp_quality качество ;
Умолчание:
Контекст: http , server , location

Эта директива появилась в версии 1.11.6.

Задаёт желаемое качество преобразованного изображения в формате WebP. Допустимые значения находятся в диапазоне от 1 до 100. Меньшим значениям обычно соответствует худшее качество изображения и меньший объём передаваемых данных. В значении параметра допустимо использование переменных.

Обработка изображения с использованием медианного фильтра

Не сочтите за наглость, но может кто нибудь даст рабочий код обработки изображения с использованием медианного фильтра.
Т.е. В событии button_click описание данного . Он должен срабатывать по нажатию кнопки. Загрузку и рисование освоил, а вот это не допойму.
Желательно полный код для особо одаренных.

31.03.2020, 17:49

Рефакторинг кода медианного фильтра черно-белого изображения
Всем привет привет. Есть такой код. Выполнял задание. Нужно было сделать медианный фильтр черно.

Реализация алгоритма реализации медианного фильтра с использованием LINQ
Вот задание с ресурса ulearn: «Практика «Медианный фильтр» Продолжайте в том же проекте Перед.

Реализация медианного фильтра с применением sse2
Не знаю, на сколько это для начинающих. Но я только начинаю вникать в суть параллелизации. Суть в.

Создание фильтра для изображения
Помогите пожалуйста написать фильтр оттенок серого для изображения по клику кнопки. Изображение.

Задание с использованием инструмента консолидация и расширенного фильтра
Помогите, пожалуйста, выполнить задания 3, 5 и 6! Не могу даже понять, что дальше делать.

Как написать код, который может анализировать изображение, чтобы найти его без трафарета?

Я работаю над проектом в компании, которая режет проекты с помощью лазерного резака. Недавно компания разработала веб-сайт, который позволяет клиентам загружать любое изображение по своему выбору. Чтобы вырезать рисунок, напечатанный на изображении, рисунок должен быть трафаретным. Итак, я должен написать программное обеспечение, которое может анализировать изображение, чтобы найти, где оно не является трафаретным. Если дизайн оказывается не трафаретным, система должна вывести сообщение, такое как «Дизайн не трафарет». Я полагаю, что это будет работать, понимая, где группа белых пикселей заключена в группу черных пикселей. Если белый пиксель полностью заключен в черные пиксели, то дизайн не является трафаретом. Я не совсем уверен, как я могу написать программное обеспечение, которое может проверить, полностью ли белый пиксель заключен в черные пиксели. Поскольку весь предыдущий код для сайта написан на PHP, я бы предпочел использовать PHP.
заранее спасибо

Решение

Короче говоря, я думаю, что ваш вопрос сводится к тому, может ли ваше изображение быть «Наводнения заполнены» — увидеть Википедия .

Итак, если я просто использую ImageMagick в командной строке, чтобы продемонстрировать, и залейте пурпурным, чтобы вы могли видеть это:

И если я сделаю то же самое с неверным изображением трафарета:

Итак, решение состоит в том, чтобы залить заливку и посмотреть, остались ли белые пиксели после этого. В реальном коде я буду заполнять черным, а не пурпурным, потому что, таким образом, мне нужно только найти, является ли самый яркий пиксель после заливки черным, или не знать ответ:

Итак, снова с ImageMagick. Залейте заливку черным и посмотрите, будет ли самый яркий пиксель после заливки черным (0) или белым (255 или 65535):

а теперь недействительный трафарет:

Есть небольшая морщинка — если верхний левый пиксель не белый, или черные части касаются края изображения и прекращают заливку, обтекающую края изображения. И есть простое решение для обоих: просто добавьте белую рамку шириной 1 пиксель по всему изображению, прежде чем начинать проверять, что верхний левый пиксель белый и что «покрасить» может обтекать края изображения:

Версия PHP

PHP не является моим родным языком программирования, поэтому могут быть и другие, более эффективные способы, но это, кажется, работает нормально

Что делает ‘filter2’ в этом коде?

Здесь im — входное изображение (изображение rgb). Какова будет эта функция стоимости?

применяет фильтр Лапласа к одному двумерному срезу im . Обычно фильтр Лапласа реализуется как [0 1 0; 1 -4 1; 0 1 0] [0 1 0; 1 -4 1; 0 1 0] [0 1 0; 1 -4 1; 0 1 0] или [1 1 1; 1 -8 1; 1 1 1] [1 1 1; 1 -8 1; 1 1 1] [1 1 1; 1 -8 1; 1 1 1] . Думаю, тот, кто написал этот код, не мог решить между этими двумя и взял средний.

Цикл проходит через каждый из 2D-фрагментов в трехмерном изображении im и добавляет квадрат каждого из результатов вместе. Если im является RGB-изображением, он будет применять фильтр к каждому из цветовых каналов и добавить квадрат результатов.

Илон Маск рекомендует:  Что такое код mcal_event_add_attribute

Оператор Лапласа дает сильный отрицательный отклик на тонких линиях изображения, а также ответы (положительные и отрицательные) вокруг краев изображения. Принимая квадрат, все ответы положительные. Обратите внимание, что функция стоимости будет близка к нулю по краям, но высоко как внутри, так и снаружи краев.

Предполагая, что filter2 тот же, что и для обработки изображений (как указано в вопросе), он должен выполнить 2d линейную фильтрацию, im будет получать свои данные в матрице [.5 1.5; 1 -6 1;.5 1.5] [.5 1.5; 1 -6 1;.5 1.5] [.5 1.5; 1 -6 1;.5 1.5] с 2d FIR-фильтром. Для возвращения G должны быть zeros(size(im,1),size(im,2)) плюс все обработанные изображения.

Как написать код, который может анализировать изображение, чтобы найти, где он, не stencilized?

Я работаю над проектом в компании, которая разрежет конструкции с использованием лазерного резака. Недавно компания разработала веб-сайт, который позволяет клиентам загрузить любое изображение по своему выбору. Для того, чтобы сократить дизайн, напечатанный на изображении, дизайн должен быть трафарет. Таким образом, я должен написать программу, которая может анализировать изображение, чтобы найти, где он не является stencilized. Если конструкция оказывается не-stencilized система должна вывести сообщение типа «Дизайн не трафарет». Я полагаю, что это будет работать, понимая, где группа белых пикселей заключаются группой черных пикселей. Если белый пиксель полностью закрыт черными пиксели, то конструкция не трафарет. Я не совсем уверен, как я могу писать программное обеспечение, которое можно проверить, если белый пиксель полностью закрыт черными пикселями. Так как весь предыдущий код сайта написан на PHP, Я предпочел бы использовать PHP. заранее спасибо

В двух словах, я думаю , что ваш вопрос сводится к тому, может ли ваше изображение будет «наводнения заполнены» — см Википедии .

Так что , если я просто использовать ImageMagick в командной строке , чтобы продемонстрировать, и наводнение заправить пурпурный , так что вы можете увидеть:

И если бы я сделать то же самое с недействительным трафарета изображения:

Таким образом, решение затопить заполнить и посмотреть, если есть какие-то белые пиксели остаются после этого. В реальном коде, я наполню черными, а не малиновый, потому что, таким образом, у меня есть только найти, если яркий пиксел после заливки черный или не знать ответ:

Так, опять же с ImageMagick . Наводнение заполнения черного цвета и посмотреть , если яркий пиксел после заливки черный (0) или белый (255 или 65535):

и теперь инвалид трафарет:

Существует одна маленькая морщинка — если верхний левый пиксель не белый, или черные части коснуться края изображения и остановить наводнение заполнения , протекающий по краям изображения. И есть простое решение для обоих, просто добавьте широкую белую рамку в 1 пиксель вокруг изображения , прежде чем начать , чтобы обеспечить левый верхний пиксель белый и что «краска» может течь весь путь вокруг краев изображения :

PHP версии

PHP не является моим родным языком программирования, так что могут быть и другие, более эффективные способы ведения дел, но это, кажется, работает нормально .

Imagefilltoborder

Php функции


Php скрипты


imagefilltoborder

(PHP 3, PHP 4, PHP 5)

imagefilltoborder — Flood fill to specific color

Description

bool imagefilltoborder ( resource image, int x, int y, int border, int color )

imagefilltoborder() performs a flood fill whose border color is defined by border . The starting point for the fill is x , y (top left is 0, 0) and the region is filled with color color .

User Contributed Notes

php at corzoogle dot com
27-Jun-2005 11:08

pritm (.a.t.) mail (.d.0.t.) ru, your jpg black areas aren’t entirely black, look *real* closely at it! so the fill will «seep through». the solution is simple, use a lossless background image format. replace this line..

$i m = imagecreatefrompng ( ‘map-back.png’ );
?>

try it with this version of your image..

(the colours may be slightly different, just a quick conversion in my regular image viewer)

as you can see, it works perfectly..

Reply to pritm (.a.t.) mail (.d.0.t.) ru below.

I had a similar problem and solved it thus:

I had to reduce the number of colors on the image I was using. It appeared to be a black and white map, but contained about 50 shades of almost black and almost white. I reduced this to two colors only (also going from JPG to GIF) so that the borders as well as the areas to be filled each were of a consistent shade.

Additionally, it d >ImageColorAt () to pick the border color, and now everything seems to work.

Image:
In action:

$i m g = ImageCreateFromGIF ( $map );

// Colors
$border = ImageColorAt ( $i m g , 416 , 111 ); // Get color of borders — apparently (0,0,0) won’t work
$red = ImageColorAllocate ( $i m g , 255 , 0 , 0 );
$green = ImageColorAllocate ( $i m g , 0 , 255 , 0 );

// Fill
ImageFillToBorder ( $i m g , 440 , 100 , $border , $red ); // Sweden
ImageFillToBorder ( $i m g , 250 , 290 , $border , $green ); // Great Britain

// Output image as PNG
header ( «Content-type: image/png» );
ImagePNG ( $i m g );
ImageDestroy ( $i m g ); // Free memoryu

?>

pritm (.a.t.) mail (.d.0.t.) ru
22-May-2005 12:53

Has found a problem from which I can not consult. Please help.

For example a code such:

$i m = imagecreatefromjpeg (‘map-back.jpg’);
$marker = ImageColorAllocate ( $i m , 0, 0, 160);

// Colors [ black ] and [ col ] are identical.
// Of what it is possible to be convinced having changed these values
$black = ImageColorAllocate ( $i m , 0, 0, 0);
$col = ImageColorAt ( $i m , 49, 297);

// The rectangular is well led round during processing
ImageRectangle ( $i m , 20, 20, 50, 50, $col );
// For check of taken color (should be black)
imageLine ( $i m , 25,25,45,45, $col );

//Fill
ImageFillToBorder ( $i m , 160,300, $col , $marker );

// A conclusion
imagejpeg ( $i m , », 100);
ImageDestroy ( $i m );

In result all is filled in jpg (except for a rectangular and parts of border) though the point fill undertook inside a figure with black border. And the normal result should be only a filled figure.

Look as:
Primary picture

As a result of performance of a script:

It is necessary to receive:

How it to achieve?
pritm (.a.t.) mail (.d.0.t.) ru
22-May-2005 12:49

Has found a problem from which I can not consult. Please help.

For example a code such:

$i m = imagecreatefromjpeg (‘map-back.jpg’);
$marker = ImageColorAllocate ( $i m , 0, 0, 160);

// Colors [ black ] and [ col ] are identical.
// Of what it is possible to be convinced having changed these values
$black = ImageColorAllocate ( $i m , 0, 0, 0);
$col = ImageColorAt ( $i m , 49, 297);

// The rectangular is well led round during processing
ImageRectangle ( $i m , 20, 20, 50, 50, $col );
// For check of taken color (should be black)
imageLine ( $i m , 25,25,45,45, $col );

//Fill
ImageFillToBorder ( $i m , 160,300, $col , $marker );

// A conclusion
imagejpeg ( $i m , », 100);
ImageDestroy ( $i m );

Илон Маск рекомендует:  Html file upload

In result all is filled in jpg (except for a rectangular and parts of border) though the point fill undertook inside a figure with black border. And the normal result should be only a filled figure.

Look as:
Primary picture

As a result of performance of a script:

It is necessary to receive:

How it to achieve?
sbuchanan at datadiver dot net
11-May-2005 02:08

edrad’s pseudo-sphere is pretty nice, but a few tweeks really improve it. (writing out the image header so a browser actually understands it and calling imagedestroy () so we clean up memory are nice things to do, too). Try drawing it at twice the size and then resampling it down. Takes more CPU, but it forces antialiasing, creating a smooth arc. Also, render it at diameter = (w >switch back to the cool grey.

Oh, and use imagecreatetruecolor instead of imagecreate if you have it available.

I agree that imageellipse is easier, though. Actually, I generate rounded corners with drop-shadows for CSS with imagefilledarc (kind of a blend of the two) Use imagefilledellipse if drawing the whole thing, use imagefilledarc if only drawing part of it (like a corner). If you use the ‘filled’ functions you can skip imagefilltoborder altogether :P

Anyway, try this for a smoother image:

$requested_width = 300 ;
$render_width = ( $requested_width * 2 ) — 1 ; // -1 to back away from edge, removing flat spot
$center = $render_width / 2 ;
$col ordivs = 255 / $center ;
$i m _scratch = @imagecreate ( $render_width , $render_width );

// $back_color = imagecolorallocate( $i m _scratch , 20, 30, 40); // try it with white so you can really see the edge first..
$back_color = imagecolorallocate ( $i m _scratch , 255 , 255 , 255 );

imagefill ( $i m _scratch , 0 , 0 , $back_color );

for ( $i = 0 ; $i $center ; $i ++) <
$diametre = $render_width — 2 * $i ;
$el_color = imagecolorallocate ( $i m _scratch , $i * $col ordivs , 0 , 0 );
imageellipse ( $i m _scratch , $center , $center , $diametre , $diametre , $el_color );
imagefilltoborder ( $i m _scratch , $center , $center , $el_color , $el_color );
>

// resample down, causes antialiasing, nice smooth curve!
$i m = @imagecreatetruecolor ( $requested_width , $requested_width );
imagecopyresampled ( $i m , $i m _scratch , 0 , 0 , 0 , 0 , $requested_width , $requested_width , $render_width , $render_width );

header ( «Content-type: image/png» );
imagepng ( $i m );
ImageDestroy ( $i m );
ImageDestroy ( $i m _scratch );

?>

admin at worldlanguages dot tk
11-Sep-2004 01:54

In the example below, for those with newer GD versions, it makes more sense to replace:

imagearc( $i m , $center , $center , $diametre , $diametre , 0, 360, $el_color );

imageellipse ( $i m , $center , $center , $diametre , $diametre , $el_color );

This is obviously simpler.
edrad at wanadoo dot fr
11-Jun-2003 04:02

Very useful to build a pseudo-sphere with a color gradient.

$width = 300 ;
$center = $width / 2 ;
$col ordivs = 255 / $center ;
$i m = @imagecreate ( $width , $width );
$back_color = imagecolorallocate ( $i m , 20 , 30 , 40 );
imagefill ( $i m , 0 , 0 , $back_color );
for ( $i = 0 ; $i $center ; $i ++)
<
$diametre = $width — 2 * $i ;
$el_color = imagecolorallocate ( $i m , $i * $col ordivs , 0 , 0 );
imagearc ( $i m , $center , $center , $diametre , $diametre , 0 , 360 , $el_color );
imagefilltoborder ( $i m , $center , $center , $el_color , $el_color );
>
imagepng ( $i m );
?>

Dark Skull Software

ecofarm at mullum dot com dot au
25-Jan-2001 09:18

Great for getting that rounded button look we see a lot of at php.net . try this sample. (remember to change png to whatever image format your version of php supports)

Header ( «Content-type: image/png» );

$i m = ImageCreate ( 80 , 25 );

//define colors.. first color declared is set as background

$blue = ImageColorAllocate ( $i m , 0 , 0 , 255 );
$white = ImageColorAllocate ( $i m , 255 , 255 , 255 );

// draw semi-circle arcs at each end

ImageArc ( $i m , 12 , 12 , 23 , 26 , 90 , 270 , $white );
ImageArc ( $i m , 67 , 12 , 23 , 26 , 270 , 90 , $white );

// fill ends outside arcs with color

ImageFillToBorder ( $i m , 0 , 0 , $white , $white );
ImageFillToBorder ( $i m , 79 , 0 , $white , $white );

заполнение цветов на карте — PHP

Я пытаюсь определить, как заполнять цвета на карте — например, карточную карточку «Риск».

Я делал это раньше с помощью HTML-таблиц, вытягивая код цвета HTML из таблицы SQL, а затем просто используя его, чтобы заполнить ячейку цветом, который я хочу.

Но для неквадратной карты я не уверен, где искать.

Я создал очень простую двухцветную карту — ее белый с черными границами. Мой желаемый результат — это «области» на карте, затененные цветом, основанные на данных в таблице sql (точно так же, как кнопка «fill» в Paint).

Это похоже на то, что мне нужно: http://php.net/manual/en/function.imagefilltoborder.php и теперь .. как определить границы .

На данный момент я не пытался ничего, потому что вопрос был: как у меня есть PHP заполнить части изображения? Я попытался сделать изображение в Paint, а затем почесал голову, задаваясь вопросом, как заполнить ее части.

После наткнулась на ссылку, позвольте мне сосредоточиться это немного больше:

Оказывается, что с imagefilltoborder, что я могу поместить изображение на моем сервере, возможно, тот, который выглядит как черно-белый вариант РИСК карта — черные границы и белые все остальное. Некоторые вопросы:

  1. Правильно ли, что переменная ‘border’ должна использовать цвет моей границы (независимо от значения черного), чтобы код мог «видеть», где находится граница?
  2. Правильно ли, что мне нужно всего лишь вычислить координаты X, Y, чтобы начать заполнение?
  3. Это работает, если у меня есть 10 разных мест для заполнения на карте? Могу ли я использовать разные цвета из кода или вытащить из SQL, чтобы назначить разные цвета этим 10 пятнам, и использовать 10 разных кодов X, Y, чтобы получить их все?

Создан 08 июн. 12 2012-06-08 21:47:22 jeremy

Image Filters

Apply high-performance filters to, and extract statistical and histogram data from images.

  • Metal Performance Shaders

Overview

The MPSUnary Image Kernel and MPSBinary Image Kernel base classes define several properties common to all image kernels:

A clip rectangle is available to all image kernels that write to a destination texture. It describes the sub-rectangle of the destination texture overwritten by the filter. If the clip rectangle is larger than the destination texture, then the intersection between the clip rectangle and the destination texture bounds is used instead. A clip rectangle may be used to avoid doing work to obscured regions of the destination image, or to manage tiling and limit operations to parts of an image—for example, if a user draws a rectangle on the screen and asks your app to just apply the filter there.

An offset is available to all image kernels that use a source texture from which pixel data is read. It describes the positioning of the source image relative to the result texture. An offset of <0, 0, 0>indicates that the top left pixel of the source texture is the center pixel used to create the top left corner of the destination texture clip rectangle (as a further example, an offset of <1, 2, 0>positions the top left corner of the clip rectangle at position x=1 , y=2 , and z=0 of the source image). The offset is the position of the top left corner of the clip rectangle in the source coordinate frame. It can be used for tiling and for translating an image up, down, left, or right by pixel increments. If there is no clip rectangle, then the offset is the top left corner of the region read by the filter. If there are multiple source textures, then the primary offset describes the top left corner of the region read in the primary source texture and the secondary offset describes the top left corner of the region read in the secondary source texture.

Илон Маск рекомендует:  Что такое код ifx_textasvarchar

An edge mode describes the behavior of texture reads that stray off the edge of the source image. This can happen if the offset is negative, meaning a read off the top or left edge of the image. This can also happen if the sum of the clip rectangle size and the offset is larger than the source image, meaning a read off the bottom or right edge of the image. Furthermore, it is also possible for image filters to have a kernel window that stretches to examine neighboring pixels beyond the image bounds (such as convolution, morphology, and resampling filters). If there are multiple source textures, then the primary edge mode describes the mode to use with the primary source texture and the secondary edge mode describes the mode to use with the secondary source texture.

In-Place Operation

Some kernels can operate in place. This means that the same texture is used to hold both the input image and the result image. Operating in place is a great way to save memory, time, and energy. You can perform an in-place operation by using the encode To Command Buffer: in Place Texture: fallback Copy Allocator: method.

Unfortunately, it is not always possible for kernels to run in place. Whether a particular kernel can operate in place can vary according to the hardware it is running on, the OS version, and the parameters and properties passed to it. You may not assume that because a kernel works in place today on a particular device that it will do so in the future.

To simplify error handling with failed in-place operation, the encode To Command Buffer: in Place Texture: fallback Copy Allocator: method takes an optional MPSCopy Allocator object. It is used to create a new texture when in-place operation is not possible so as to allow the operation to proceed out of place in a reliable fashion instead. When this happens, the input texture is released and replaced with a new texture. To make use of the feature, you will need to write a copy allocator block.

Listing 1 shows a minimal copy allocator implementation. For more information, see the MPSCopy Allocator reference.

Minimal MPSCopyAllocator Implementation

Supported Pixel Formats for Image Kernels

All Metal Performance Shaders image kernels support source and destination textures with the following ordinary and packed pixel formats:

Ordinary formats with one 8-bit normalized unsigned integer component.

Ordinary formats with two 8-bit normalized unsigned integer components.

Ordinary formats with four 8-bit normalized unsigned integer components.

Ordinary format with 16-bit floating-point components.

Ordinary format with 32-bit floating-point components.

Ordinary format with 16-bit normalized unsigned integer components.

Packed 16-bit format with normalized unsigned integer color components.

Packed 32-bit format with normalized unsigned integer color components.

Packed 32-bit format with floating-point color components.

Some compressed pixel formats can be used as source textures. They cannot be used as destination textures because they cannot be written to. Metal Performance Shaders image kernels support the following compression families:

The following Metal Performance Shaders image kernels also support source and destination textures with ordinary signed and unsigned integer pixel formats:

The ordinary signed and unsigned integer pixel formats supported by these image kernels:

Ordinary format with 8-bit signed integer components.

Ordinary format with 8-bit unsigned integer components.

Ordinary format with 16-bit signed integer components.

Ordinary format with 16-bit unsigned integer components.

Ordinary format with 32-bit signed integer components.

Ordinary format four 32-bit unsigned integer components.

For more information on pixel formats, see MTLPixel Format and Pixel Format Capabilities.

imagefilltoborder

imagefilltoborder — Заливка цветом

Описание

imagefilltoborder() производит заливку области, ограниченной цветом border . Начальная координата x , y (левый верхний угол имеет координаты 0, 0), а область закрашивается цветом color .

Список параметров

Ресурс изображения, полученный одной из функций создания изображений, например, такой как imagecreatetruecolor() .

Цвет границы заливки. Идентификатор цвета, созданный функцией imagecolorallocate() .

Цвет заливки. Идентификатор цвета, созданный функцией imagecolorallocate() .

Возвращаемые значения

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Закрашивание эллипса

// создание изображения, установка белого фона
$im = imagecreatetruecolor ( 100 , 100 );
imagefilledrectangle ( $im , 0 , 0 , 100 , 100 , imagecolorallocate ( $im , 255 , 255 , 255 ));

// рисование эллипса закрашенного черным цветом
imageellipse ( $im , 50 , 50 , 50 , 50 , imagecolorallocate ( $im , 0 , 0 , 0 ));

// установка цвета границы заливки
$border = imagecolorallocate ( $im , 0 , 0 , 0 );
$fill = imagecolorallocate ( $im , 255 , 0 , 0 );

// заливка области
imagefilltoborder ( $im , 50 , 50 , $border , $fill );

// вывод и освобождение памяти
header ( ‘Content-type: image/png’ );
imagepng ( $im );
imagedestroy ( $im );
?>

Результатом выполнения данного примера будет что-то подобное:

Что делает ‘filter2’ в этом коде?

Здесь im — входное изображение (изображение rgb). Какова будет эта функция стоимости?

применяет фильтр Лапласа к одному двумерному срезу im . Обычно фильтр Лапласа реализуется как [0 1 0; 1 -4 1; 0 1 0] [0 1 0; 1 -4 1; 0 1 0] [0 1 0; 1 -4 1; 0 1 0] или [1 1 1; 1 -8 1; 1 1 1] [1 1 1; 1 -8 1; 1 1 1] [1 1 1; 1 -8 1; 1 1 1] . Думаю, тот, кто написал этот код, не мог решить между этими двумя и взял средний.

Цикл проходит через каждый из 2D-фрагментов в трехмерном изображении im и добавляет квадрат каждого из результатов вместе. Если im является RGB-изображением, он будет применять фильтр к каждому из цветовых каналов и добавить квадрат результатов.

Оператор Лапласа дает сильный отрицательный отклик на тонких линиях изображения, а также ответы (положительные и отрицательные) вокруг краев изображения. Принимая квадрат, все ответы положительные. Обратите внимание, что функция стоимости будет близка к нулю по краям, но высоко как внутри, так и снаружи краев.

Предполагая, что filter2 тот же, что и для обработки изображений (как указано в вопросе), он должен выполнить 2d линейную фильтрацию, im будет получать свои данные в матрице [.5 1.5; 1 -6 1;.5 1.5] [.5 1.5; 1 -6 1;.5 1.5] [.5 1.5; 1 -6 1;.5 1.5] с 2d FIR-фильтром. Для возвращения G должны быть zeros(size(im,1),size(im,2)) плюс все обработанные изображения.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL