Фильтр feColorMatrix предназначен для коррекции цвета и яркости изображения. Его структура имеет следующий вид (рис. 9.1):
(рис 9.1) Структура фильтра feColorMatrix.В Лекции 6 мы проходили несколько типов трансформации – translate, rotate, scale, skewX, skewY. Тип трансформации matrix представлял собой лишь способ записи отдельных преобразованиий. Подобно трансформациям, фильтр feColorMatrix также представляется в виде , hueRotate и liminanceToAlpha могут быть выражены при помощи значения matrix. Рассмотрим вначале самостоятельные типы, примеры которых приводятся в табл. 9.1.
| № | Код | Вид в браузере |
|---|---|---|
| 9.1.1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="350"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrix1.svg
</desc>
<defs>
<filter id="myFilter" filterUnits="userSpaceOnUse"
x="10" y="175" width="186" height="125">
<feImage xlink:href="#MyImage" result="image1"/>
<feColorMatrix id="color" in="image1"
type="luminanceToAlpha"/>
</filter>
<image id="MyImage" x="10" y="175" width="186" height="125"
xlink:href="sea2.jpg"/>
</defs>
<rect x="0" y="0" width="200" height="200"
filter="url(#myFilter)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
</svg>
|
![]() |
| Описание | ||
Значение luminanceToAlpha превращает изображение в негатив черно-белой feColorMatrix не поддерживает каких-либо числовых атрибутов. |
||
| № | Код | Описание |
| 9.1.2 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrix2.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color1" in="image1"
type="saturate" values="0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color2" in="image1"
type="saturate" values="0.2"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color3" in="image1"
type="saturate" values="0.4"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color4" in="image1"
type="saturate" values="0.6"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color5" in="image1"
type="saturate" values="0.8"/>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
values="0"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
values="0.2"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
values="0.4"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
values="0.6"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
values="0.8"</text>
</svg>
|
Значение "values (диапазон от 0 до 1 ) позволяет плавно управлять цветом изображения. При значении values="0" получается черно-белое изображение. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.1.3 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrix3.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color1" in="image1"
type="hueRotate" values="0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color2" in="image1"
type="hueRotate" values="30"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color3" in="image1"
type="hueRotate" values="60"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color4" in="image1"
type="hueRotate" values="90"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color5" in="image1"
type="hueRotate" values="120"/>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
values="0"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
values="30"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
values="60"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
values="90"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
values="120"</text>
</svg>
|
Значение hueRotate позволяет смещать цветовые оттенки изображения. Диапазон от 0 до 360 градусов атрибута values соответствует всей 0 до 120 градусов. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.1.4 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrix4.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color1" in="image1"
type="hueRotate" values="150"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color2" in="image1"
type="hueRotate" values="180"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color3" in="image1"
type="hueRotate" values="210"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color4" in="image1"
type="hueRotate" values="240"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color5" in="image1"
type="hueRotate" values="270"/>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
values="150"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
values="180"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
values="210"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
values="240"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
values="270"</text>
</svg>
|
Этот пример охватывает изменения от 150 до 270 градусов. |
| Вид в браузере | ||
![]() |
||
Рассмотрим теперь матричную запись значений атрибута type. В самом общем случае тип matrix записывается в виде матрицы следующим образом:
Здесь R', G', B', A' – измененные компоненты изображения в каналах A – прозрачность), R, G, B, A – исходные. Эквивалентная запись для подстановки в
type="matrix" values="a11 a12 a13 a14 a15 a21 a22 a23 a24 a25 a31 a32 a33 a34 a35 a41 a42 a43 a44 a45"
Допускается запись с отступами:
values="a11 a12 a13 a14 a15 a21 a22 a23 a24 a25 a31 a32 a33 a34 a35 a41 a42 a43 a44 a45"
А также запись в столбик, с переносом на новые строки:
values="a11 a12 a13 a14 a15 a21 a22 a23 a24 a25 a31 a32 a33 a34 a35 a41 a42 a43 a44 a45"
Как уже отмечалось, тип matrix не вносит изменений в изображение, это всего лишь форма записи других значений атрибута type. Тип представляется следующей матрицей:
Где s – одиночное целое 0 до 1.
Тип hueRotate представляется следующей матрицей:
Элементы a11 a12 a13 и т. д. вычисляются отдельно по следующей схеме:
где angle – значение угла в градусах. Здесь мы сталкиваемся с двумя новыми понятиями – умножением матрицы на число и сложением матриц. Рассмотрим их отдельно. Для умножения матрицы на число k нужно умножить каждый элемент матицы на это число:
Сложение матриц определяется довольно простым образом:
$$\left | \begin{array}{ccc} a_{11} a_{12} a_{13}\\ a_{21} a_{22} a_{23}\\ a_{31} a_{32} a_{33} \end{array} \right | + \left | \begin{array}{ccc} b_{11} b_{12} b_{13}\\ b_{21} b_{22} b_{23}\\ b_{31} b_{32} b_{33} \end{array} \right | = \left | \begin{array}{ccc} a_{11}+ b_{11} a_{12}+ b_{12} a_{13}+ b_{13}\\ a_{21}+ b_{21} a_{22}+ b_{22} a_{23}+ b_{23}\\ a_{31}+ b_{31} a_{32}+ b_{32} a_{33}+ b_{33} \end{array} \right |$$Тип luminanceToAlpha, который не содержит возможности изменять какие-либо параметры, представляется так:
Применять эту форму записи не сложно. Вычислять матрицы можно вручную или при помощи программы matrix.
| № | Код |
|---|---|
| 9.2.1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrixM1.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color1" in="image1"
type="matrix" values="1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color2" in="image1"
type="matrix" values="1 1 1 1 1
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color3" in="image1"
type="matrix" values="1 0 0 0 0
1 1 1 1 1
0 0 1 0 0
0 0 0 1 0"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color4" in="image1"
type="matrix" values="1 0 0 0 0
0 1 0 0 0
1 1 1 1 1
0 0 0 1 0"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color5" in="image1"
type="matrix" values="1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
1 1 1 1 1"/>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
Исходная матрица</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
R = "1 1 1 1 1 "</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
G = "1 1 1 1 1 "</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
B = "1 1 1 1 1 "</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
A = "1 1 1 1 1 "</text>
</svg>
|
| Вид в браузере | |
![]() |
|
| Описание | |
Мы подставили простые значения матрицы, соответствующие цветопередачи в каналах R, G, B и A. |
|
| № | Код |
| 9.2.2 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrixM2.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color1" in="image1"
type="matrix" values="0.213 0.715 0.072 0 0
0.213 0.715 0.072 0 0
0.213 0.715 0.072 0 0
0 0 0 1 0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color2" in="image1"
type="matrix" values="0.37 0.572 0.058 0 0
0.17 0.772 0.058 0 0
0.17 0.572 0.258 0 0
0 0 0 1 0"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color3" in="image1"
type="matrix" values="0.213 0.429 0.043 0 0
0.128 0.829 0.043 0 0
0.128 0.429 0.443 0 0
0 0 0 1 0"/>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
values="0"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
values="0.2"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
values="0.4"</text>
</svg>
|
| Вид в браузере | |
![]() |
|
| Описание | |
Вычисление нескольких матриц для значения При При При Эти значения и были подставлены в код |
|
| № | Код |
| 9.2.3 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrixM3.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color1" in="image1"
type="matrix" values="1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color2" in="image1"
type="matrix" values="0.784 -0.263 0.479 0 0
0.102 1.032 -0.133 0 0
-0.369 0.46 0.909 0 0
0 0 0 1 0"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color3" in="image1"
type="matrix" values="0.42 -0.261 0.841 0 0
0.231 0.978 -0.209 0 0
-0.576 0.979 0.596 0 0
0 0 0 1 0"/>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
values="0"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
values="30"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
values="60"</text>
</svg>
|
| Вид в браузере | |
![]() |
|
| Описание | |
Вычисление нескольких матриц для значения При При При |
|
| № | Код |
| 9.2.4 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="350"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrixM4.svg
</desc>
<defs>
<filter id="myFilter" filterUnits="userSpaceOnUse"
x="10" y="175" width="186" height="125">
<feImage xlink:href="#MyImage" result="image1"/>
<feColorMatrix id="color" in="image1"
type="matrix" values="0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0.2125 0.7154 0.0721 0 0"/>
</filter>
<image id="MyImage" x="10" y="175" width="186" height="125"
xlink:href="sea2.jpg"/>
</defs>
<rect x="0" y="0" width="200" height="200"
filter="url(#myFilter)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
</svg>
|
| Вид в браузере | |
![]() |
|
| Описание | |
Задаваемая матрица эквивалентна типу luminanceToAlpha |
Фильтр feComponentTransfer – мощный инструмент для редактирования яркости, контраста и цветового баланса изображения. Его структура имеет следующий вид (рис. 9. 2):
(рис 9.2) Структура фильтра feComponentTransferНа рисунке изображена совокупность атрибутов для одного канала R, выражаемого элементов feFuncR. В состав фильтра входят четыре функции, для каждого из каналов, причем в каждом из функций поддерживаются индивидуальные настройки атрибутов. В табл. 9.3 приводится описание атрибутов фильтра feComponentTransfer.
| № | Название |
|---|---|
| 9.3.1 | type |
| Описание | |
Тип преобразования в заданном канале. Возможны следующие identity – исходное значение, без преобразований.table – преобразование характеризуется набором значений. – преобразование также характеризуется набором значений, оно носит резко выраженный характер.
где
Описание коэффициентов |
|
| Диапазон значений | |
identity | table | | linear | gamma |
|
| Значение по умолчанию | |
| – | |
| № | Название |
| 9.3.2 | tableValues |
| Описание | |
Список значений, по которому осуществляется преобразование. В простейшем случае – набор четырех чисел для каждого из каналов R, G, B, A. |
|
| Диапазон значений | |
Набор значений типа <number> |
|
| Значение по умолчанию | |
| – | |
| № | Название |
| 9.3.3 | |
| Описание | |
| Значение яркости. | |
| Диапазон значений | |
<number> |
|
| Значение по умолчанию | |
1 |
|
| № | Название |
| 9.3.4 | |
| Описание | |
При задании type="linear" этот атрибут характеризует область действия |
|
| Диапазон значений | |
<number> |
|
| Значение по умолчанию | |
0 |
|
| № | Название |
| 9.3.5 | |
| Описание | |
При задании type="gamma" этот атрибут характеризует амплитуду экспоненциальной функции. Визуально это представляется в степени выраженности преобразования. |
|
| Диапазон значений | |
<number> |
|
| Значение по умолчанию | |
1 |
|
| № | Название |
| 9.3.6 | |
| Описание | |
При задании type="gamma" этот атрибут характеризует степень экспоненциальной функции. |
|
| Диапазон значений | |
<number> |
|
| Значение по умолчанию | |
1 |
|
| № | Название |
| 9.3.6 | Offset |
| Описание | |
При задании type="gamma" этот атрибут характеризует смещение экспоненциальной функции. |
|
| Диапазон значений | |
<number> |
|
| Значение по умолчанию | |
0 |
Следует отметить, что само по себе сочетание атрибутов фильтра feComponentTransfer предоставляет огромный диапазон преобразований изображений, тогда как для базовых операций требуется ограниченное их количество. В табл. 9.4 приводятся примеры использования этого фильтра.
| № | Код | Вид в браузере |
|---|---|---|
| 9.4.1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="350"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer1.svg
</desc>
<defs>
<filter id="myFilter" filterUnits="userSpaceOnUse"
x="10" y="175" width="186" height="125">
<feImage xlink:href="#MyImage" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="identity"/>
<feFuncG type="identity"/>
<feFuncB type="identity"/>
<feFuncA type="linear" slope="0.5" intercept="0"/>
</feComponentTransfer>
</filter>
<image id="MyImage" x="10" y="175" width="186" height="125"
xlink:href="sea2.jpg"/>
</defs>
<rect x="10" y="175" width="186" height="125"
filter="url(#myFilter)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
</svg>
|
![]() |
| Описание | ||
Изменение изображения в канале прозрачности ( A ). |
||
| № | Код | Описание |
| 9.4.2 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer2.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="identity"/>
<feFuncG type="identity"/>
<feFuncB type="identity"/>
<feFuncA type="linear" slope="1" intercept="0"/>
</feComponentTransfer>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="identity"/>
<feFuncG type="identity"/>
<feFuncB type="identity"/>
<feFuncA type="linear" slope="0.8" intercept="0"/>
</feComponentTransfer>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="identity"/>
<feFuncG type="identity"/>
<feFuncB type="identity"/>
<feFuncA type="linear" slope="0.6" intercept="0"/>
</feComponentTransfer>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="identity"/>
<feFuncG type="identity"/>
<feFuncB type="identity"/>
<feFuncA type="linear" slope="0.4" intercept="0"/>
</feComponentTransfer>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="identity"/>
<feFuncG type="identity"/>
<feFuncB type="identity"/>
<feFuncA type="linear" slope="0.2" intercept="0"/>
</feComponentTransfer>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
slope="1"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
slope="0.8"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
slope="0.6"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
slope="0.4"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
slope="0.2"</text>
</svg>
|
Примеры уменьшения яркости изображения. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.4.3 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer3.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="identity"/>
<feFuncG type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncB type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncG type="identity"/>
<feFuncB type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncG type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncB type="identity"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncG type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncB type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncG type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncB type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncA type="gamma" amplitude="0" exponent="1" offset="0"/>
</feComponentTransfer>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
feFuncR type="identity"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
feFuncG type="identity"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
feFuncB type="identity"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
feFuncA type="identity"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
feFuncR (G,B,A) type="gamma" </text>
</svg>
|
Если оставить значения заданного канала, например R, неизменным ( type="identity" ), а остальные каналы выключить, задавая нулевое значение амплитуды, то изображение будет принимать тон этого канала. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.4.4 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer4.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="1.5" intercept="0"/>
<feFuncG type="linear" slope="1.5" intercept="0"/>
<feFuncB type="linear" slope="1.5" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="2" intercept="0"/>
<feFuncG type="linear" slope="2" intercept="0"/>
<feFuncB type="linear" slope="2" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="3" intercept="0"/>
<feFuncG type="linear" slope="3" intercept="0"/>
<feFuncB type="linear" slope="3" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="3" intercept="0"/>
<feFuncG type="linear" slope="3" intercept="0"/>
<feFuncB type="linear" slope="1" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="1" intercept="0"/>
<feFuncG type="linear" slope="3" intercept="0"/>
<feFuncB type="linear" slope="3" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
type="linear" slope="1.5"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
type="linear" slope="2"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
type="linear" slope="3"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
type="linear" slope="3" (B) slope="1"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
type="linear" slope="3" (R) slope="1"</text>
</svg>
|
Регулировка цветового баланса в задаваемых каналах. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.4.5 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer5.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="0.8" intercept="0"/>
<feFuncG type="linear" slope="0.8" intercept="0"/>
<feFuncB type="linear" slope="0.8" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="0.6" intercept="0"/>
<feFuncG type="linear" slope="0.6" intercept="0"/>
<feFuncB type="linear" slope="0.6" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="0.4" intercept="0"/>
<feFuncG type="linear" slope="0.4" intercept="0"/>
<feFuncB type="linear" slope="0.4" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="0.4" intercept="0"/>
<feFuncG type="linear" slope="0.4" intercept="0"/>
<feFuncB type="linear" slope="1" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="1" intercept="0"/>
<feFuncG type="linear" slope="0.4" intercept="0"/>
<feFuncB type="linear" slope="0.4" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
type="linear" slope="0.8"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
type="linear" slope="0.6"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
type="linear" slope="0.4"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
type="linear" slope="0.4" (B) slope="1"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
type="linear" slope="0.4" (R) slope="1"</text>
</svg>
|
Регулировка цветового баланса в сочетании с уменьшением яркости изображения. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.4.6 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer6.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues=""/>
<feFuncG type="table" tableValues=""/>
<feFuncB type="table" tableValues=""/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="0 0 0 0"/>
<feFuncG type="table" tableValues="0 0 0 0"/>
<feFuncB type="table" tableValues="0 0 0 0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 1 1 1"/>
<feFuncG type="table" tableValues="1 1 1 1"/>
<feFuncB type="table" tableValues="1 1 1 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="0 0 0 1"/>
<feFuncG type="table" tableValues="0 0 0 1"/>
<feFuncB type="table" tableValues="0 0 0 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 1 1 0"/>
<feFuncG type="table" tableValues="1 1 1 0"/>
<feFuncB type="table" tableValues="1 1 1 0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
type="table" tableValues=""</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
type="table" tableValues="0 0 0 0"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
type="table" tableValues="1 1 1 1"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
type="table" tableValues="0 0 0 1"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
type="table" tableValues="1 1 1 0"</text>
</svg>
|
Набор tableValues с предельными значениями. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.4.7 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer7.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="0 1 1 1"/>
<feFuncG type="table" tableValues="0 1 1 1"/>
<feFuncB type="table" tableValues="0 1 1 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 0 0 0"/>
<feFuncG type="table" tableValues="1 0 0 0"/>
<feFuncB type="table" tableValues="1 0 0 0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 0 1 1"/>
<feFuncG type="table" tableValues="1 0 1 1"/>
<feFuncB type="table" tableValues="1 0 1 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="0 1 0 0"/>
<feFuncG type="table" tableValues="0 1 0 0"/>
<feFuncB type="table" tableValues="0 1 0 0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="0 1 1 0"/>
<feFuncG type="table" tableValues="0 1 1 0"/>
<feFuncB type="table" tableValues="0 1 1 0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
type="table" tableValues="0 1 1 1"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
type="table" tableValues="1 0 0 0"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
type="table" tableValues="1 0 1 1"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
type="table" tableValues="0 1 0 0"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
type="table" tableValues="0 1 1 0"</text>
</svg>
|
Набор tableValues позволяет придавать изображению сюрреалистические оттенки. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.4.8 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer8.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 1 1 1"/>
<feFuncG type="table" tableValues="1 0 0 1"/>
<feFuncB type="table" tableValues="1 0 0 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 0 0 1"/>
<feFuncG type="table" tableValues="1 1 1 1"/>
<feFuncB type="table" tableValues="1 0 0 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 0 0 1"/>
<feFuncG type="table" tableValues="1 0 0 1"/>
<feFuncB type="table" tableValues="1 1 1 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 1 1 1"/>
<feFuncG type="table" tableValues="1 1 1 1"/>
<feFuncB type="table" tableValues="1 0 0 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 1 1 1"/>
<feFuncG type="table" tableValues="1 0 0 1"/>
<feFuncB type="table" tableValues="1 1 1 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
(G, B) "1 0 0 1" (R) "1 1 1 1"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
(R, B) "1 0 0 1" (B) "1 1 1 1"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
(R, G) "1 0 0 1" (B) "1 1 1 1"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
(B) "1 0 0 1" (R, G) "1 1 1 1"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
(G) "1 0 0 1" (R, B) "1 1 1 1"</text>
</svg>
|
Набор tableValues со значениями, смещающими цветовой баланс в сторону основных и дополнительных цветов. |
| Вид в браузере | ||
![]() |
||
Фильтр feTurbulence содержит встроенные средства для генерации структуры, напоминающей облака или мрамор. В сочетании с фильтрами освещения (см. Лекцию 10) эти текстуры могут быть окрашены в произвольные цвета, а также менять свой вид (например, выглядеть как мешковина). Структура этого фильтра выглядит так (рис. 9.3 ):
(рис 9.3) Структура фильтра feTurbulenceАтрибуты отвечают за внешний вид генерируемой структуры: зернистость, размер волокон, их количество и направление. В табл. 9.5 приводится описание атрибутов фильтра.
| № | Название |
|---|---|
| 9.5.1 | baseFrequency |
| Описание | |
| Частота генерации шума, которая представляется в виде двух чисел, определяющих горизонтальное и вертикальное направления. Если задается одно число, то оно по умолчанию принимается для обоих направлений. | |
| Диапазон значений | |
<number> <number> |
|
| Значение по умолчанию | |
0 |
|
| № | Название |
| 9.5.2 | numOctaves |
| Описание | |
| Число гармоник генерации шума. | |
| Диапазон значений | |
<integer> |
|
| Значение по умолчанию | |
1 |
|
| № | Название |
| 9.5.3 | |
| Описание | |
| Начальное число на основании которого генерируются случайные числа. | |
| Диапазон значений | |
<number> |
|
| Значение по умолчанию | |
0 |
|
| № | Название |
| 9.5.4 | stitchTiles |
| Описание | |
При значении stitch сглаживаются края генерируемых линий. |
|
| Диапазон значений | |
stitch | noStitch |
|
| Значение по умолчанию | |
noStitch |
|
| № | Название |
| 9.5.5 | type |
| Описание | |
| Тип генерируемой текстуры. | |
| Диапазон значений | |
fractalNoise | turbulence |
|
| Значение по умолчанию | |
turbulence |
В табл. 9.6 приводятся примеры использования этого фильтра.
| № | Код | Вид в браузере |
|---|---|---|
| 9.6.1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="200"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feTurbulence1.svg
</desc>
<defs>
<filter id="myFilter" filterUnits="userSpaceOnUse"
x="0" y="0" width="200" height="200">
<feTurbulence type="fractalNoise" baseFrequency="0.01"
numOctaves="4" seed="0"/>
</filter>
</defs>
<rect x="0" y="0" width="200" height="200"
filter="url(#myFilter)"/>
</svg>
|
![]() |
| Описание | ||
Тип fractalNoise наиболее пригоден для создания структуры, напоминающей облака. |
||
| № | Код | Описание |
| 9.6.2 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="460" height="610"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feTurbulence2.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="0" y="0" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.01"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="150" y="0" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.02"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="300" y="0" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.05"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="0" y="150" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.1"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="150" y="150" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.2"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter6" filterUnits="userSpaceOnUse"
x="300" y="150" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.3"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter7" filterUnits="userSpaceOnUse"
x="0" y="300" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.4"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter8" filterUnits="userSpaceOnUse"
x="150" y="300" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.5"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter9" filterUnits="userSpaceOnUse"
x="300" y="300" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.6"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter10" filterUnits="userSpaceOnUse"
x="0" y="450" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.7"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter11" filterUnits="userSpaceOnUse"
x="150" y="450" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter12" filterUnits="userSpaceOnUse"
x="300" y="450" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="1"
numOctaves="4" seed="0"/>
</filter>
</defs>
<rect x="0" y="0" width="150" height="150"
filter="url(#myFilter1)"/>
<rect x="150" y="0" width="150" height="150"
filter="url(#myFilter2)"/>
<rect x="300" y="0" width="150" height="150"
filter="url(#myFilter3)"/>
<rect x="0" y="150" width="150" height="150"
filter="url(#myFilter4)"/>
<rect x="150" y="150" width="150" height="150"
filter="url(#myFilter5)"/>
<rect x="300" y="150" width="150" height="150"
filter="url(#myFilter6)"/>
<rect x="0" y="300" width="150" height="150"
filter="url(#myFilter7)"/>
<rect x="150" y="300" width="150" height="150"
filter="url(#myFilter8)"/>
<rect x="300" y="300" width="150" height="150"
filter="url(#myFilter9)"/>
<rect x="0" y="450" width="150" height="150"
filter="url(#myFilter10)"/>
<rect x="150" y="450" width="150" height="150"
filter="url(#myFilter11)"/>
<rect x="300" y="450" width="150" height="150"
filter="url(#myFilter12)"/>
<!--Вспомогательные фигуры-->
<rect x="0" y="0" width="450" height="600"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="150" y="0" width="150" height="600"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="0" y="150" width="450" height="150"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="0" y="450" width="450" height="150"
style="fill:none;stroke:black; stroke-width:2"/>
<!--Подписи-->
<text x="10" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.01"</text>
<text x="160" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.02"</text>
<text x="310" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.05"</text>
<text x="10" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1"</text>
<text x="160" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.2"</text>
<text x="310" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.3"</text>
<text x="10" y="315" style="fill: black; font-size: 12px">
baseFrequency="0.4"</text>
<text x="160" y="315" style="fill: black; font-size: 12px">
baseFrequency="0.5"</text>
<text x="310" y="315" style="fill: black; font-size: 12px">
baseFrequency="0.6"</text>
<text x="10" y="465" style="fill: black; font-size: 12px">
baseFrequency="0.7"</text>
<text x="160" y="465" style="fill: black; font-size: 12px">
baseFrequency="0"</text>
<text x="310" y="465" style="fill: black; font-size: 12px">
baseFrequency="1"</text>
</svg>
|
Атрибут baseFrequency за управление ячеистой структуры. Чем больше значение этого атрибута, тем меньше размер структуры. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.6.3 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="460" height="610"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feTurbulence3.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="0" y="0" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.01"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="150" y="0" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.02"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="300" y="0" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.05"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="0" y="150" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.1"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="150" y="150" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.2"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter6" filterUnits="userSpaceOnUse"
x="300" y="150" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.3"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter7" filterUnits="userSpaceOnUse"
x="0" y="300" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.4"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter8" filterUnits="userSpaceOnUse"
x="150" y="300" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.5"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter9" filterUnits="userSpaceOnUse"
x="300" y="300" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.6"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter10" filterUnits="userSpaceOnUse"
x="0" y="450" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.7"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter11" filterUnits="userSpaceOnUse"
x="150" y="450" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter12" filterUnits="userSpaceOnUse"
x="300" y="450" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="1"
numOctaves="4" seed="0"/>
</filter>
</defs>
<rect x="0" y="0" width="150" height="150"
filter="url(#myFilter1)"/>
<rect x="150" y="0" width="150" height="150"
filter="url(#myFilter2)"/>
<rect x="300" y="0" width="150" height="150"
filter="url(#myFilter3)"/>
<rect x="0" y="150" width="150" height="150"
filter="url(#myFilter4)"/>
<rect x="150" y="150" width="150" height="150"
filter="url(#myFilter5)"/>
<rect x="300" y="150" width="150" height="150"
filter="url(#myFilter6)"/>
<rect x="0" y="300" width="150" height="150"
filter="url(#myFilter7)"/>
<rect x="150" y="300" width="150" height="150"
filter="url(#myFilter8)"/>
<rect x="300" y="300" width="150" height="150"
filter="url(#myFilter9)"/>
<rect x="0" y="450" width="150" height="150"
filter="url(#myFilter10)"/>
<rect x="150" y="450" width="150" height="150"
filter="url(#myFilter11)"/>
<rect x="300" y="450" width="150" height="150"
filter="url(#myFilter12)"/>
<!--Вспомогательные фигуры-->
<rect x="0" y="0" width="450" height="600"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="150" y="0" width="150" height="600"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="0" y="150" width="450" height="150"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="0" y="450" width="450" height="150"
style="fill:none;stroke:black; stroke-width:2"/>
<!--Подписи-->
<text x="10" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.01"</text>
<text x="160" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.02"</text>
<text x="310" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.05"</text>
<text x="10" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1"</text>
<text x="160" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.2"</text>
<text x="310" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.3"</text>
<text x="10" y="315" style="fill: black; font-size: 12px">
baseFrequency="0.4"</text>
<text x="160" y="315" style="fill: black; font-size: 12px">
baseFrequency="0.5"</text>
<text x="310" y="315" style="fill: black; font-size: 12px">
baseFrequency="0.6"</text>
<text x="10" y="465" style="fill: black; font-size: 12px">
baseFrequency="0.7"</text>
<text x="160" y="465" style="fill: black; font-size: 12px">
baseFrequency="0"</text>
<text x="310" y="465" style="fill: black; font-size: 12px">
baseFrequency="1"</text>
</svg>
|
Тип turbulence позволяет имитировать мраморную поверхность. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.6.4 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="460" height="310"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feTurbulence4.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="0" y="0" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0,0.1"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="150" y="0" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0,0.1"
numOctaves="4" seed="10"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="300" y="0" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.01, 0.1"
numOctaves="4" seed="1"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="0" y="150" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.1,0.01"
numOctaves="4" seed="1"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="150" y="150" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.1, 0"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter6" filterUnits="userSpaceOnUse"
x="300" y="150" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.1,0"
numOctaves="4" seed="10"/>
</filter>
</defs>
<rect x="0" y="0" width="150" height="150"
filter="url(#myFilter1)"/>
<rect x="150" y="0" width="150" height="150"
filter="url(#myFilter2)"/>
<rect x="300" y="0" width="150" height="150"
filter="url(#myFilter3)"/>
<rect x="0" y="150" width="150" height="150"
filter="url(#myFilter4)"/>
<rect x="150" y="150" width="150" height="150"
filter="url(#myFilter5)"/>
<rect x="300" y="150" width="150" height="150"
filter="url(#myFilter6)"/>
<!--Вспомогательные фигуры-->
<rect x="0" y="0" width="450" height="300"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="150" y="0" width="150" height="300"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="0" y="150" width="450" height="150"
style="fill:none;stroke:black; stroke-width:2"/>
<!--Подписи-->
<text x="10" y="15" style="fill: black; font-size: 12px">
baseFrequency="0,0.1" </text>
<text x="10" y="30" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="10" y="45" style="fill: black; font-size: 12px">
seed="0"</text>
<text x="160" y="15" style="fill: black; font-size: 12px">
baseFrequency="0,0.1" </text>
<text x="160" y="30" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="160" y="45" style="fill: black; font-size: 12px">
seed="10"</text>
<text x="304" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.01, 0.1" </text>
<text x="304" y="30" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="304" y="45" style="fill: black; font-size: 12px">
seed="1"</text>
<text x="5" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1,0.01"</text>
<text x="5" y="180" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="5" y="195" style="fill: black; font-size: 12px">
seed="1"</text>
<text x="160" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1, 0" </text>
<text x="160" y="180" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="160" y="195" style="fill: black; font-size: 12px">
seed="0"</text>
<text x="310" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1,0" </text>
<text x="310" y="180" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="310" y="195" style="fill: black; font-size: 12px">
seed="10"</text>
</svg>
|
Атрибут отвечает за выраженность слоистой структуры. Пара значений атрибута baseFrequency задает направление структуры. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.6.5 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="460" height="310"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feTurbulence5.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="0" y="0" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0,0.1"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="150" y="0" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0,0.1"
numOctaves="4" seed="10"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="300" y="0" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.01, 0.1"
numOctaves="4" seed="1"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="0" y="150" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.1,0.01"
numOctaves="4" seed="1"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="150" y="150" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.1, 0"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter6" filterUnits="userSpaceOnUse"
x="300" y="150" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.1,0"
numOctaves="4" seed="10"/>
</filter>
</defs>
<rect x="0" y="0" width="150" height="150"
filter="url(#myFilter1)"/>
<rect x="150" y="0" width="150" height="150"
filter="url(#myFilter2)"/>
<rect x="300" y="0" width="150" height="150"
filter="url(#myFilter3)"/>
<rect x="0" y="150" width="150" height="150"
filter="url(#myFilter4)"/>
<rect x="150" y="150" width="150" height="150"
filter="url(#myFilter5)"/>
<rect x="300" y="150" width="150" height="150"
filter="url(#myFilter6)"/>
<!--Вспомогательные фигуры-->
<rect x="0" y="0" width="450" height="300"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="150" y="0" width="150" height="300"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="0" y="150" width="450" height="150"
style="fill:none;stroke:black; stroke-width:2"/>
<!--Подписи-->
<text x="10" y="15" style="fill: black; font-size: 12px">
baseFrequency="0,0.1" </text>
<text x="10" y="30" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="10" y="45" style="fill: black; font-size: 12px">
seed="0"</text>
<text x="160" y="15" style="fill: black; font-size: 12px">
baseFrequency="0,0.1" </text>
<text x="160" y="30" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="160" y="45" style="fill: black; font-size: 12px">
seed="10"</text>
<text x="304" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.01, 0.1" </text>
<text x="304" y="30" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="304" y="45" style="fill: black; font-size: 12px">
seed="1"</text>
<text x="5" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1,0.01"</text>
<text x="5" y="180" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="5" y="195" style="fill: black; font-size: 12px">
seed="1"</text>
<text x="160" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1, 0" </text>
<text x="160" y="180" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="160" y="195" style="fill: black; font-size: 12px">
seed="0"</text>
<text x="310" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1,0" </text>
<text x="310" y="180" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="310" y="195" style="fill: black; font-size: 12px">
seed="10"</text>
</svg>
|
Слоистая стуктура и ее направления для типа turbulence. |
| Вид в браузере | ||
![]() |
||
Фильтр feColorMatrix предназначен для коррекции цвета и яркости изображения. Его структура имеет следующий вид (рис. 9.1):
(рис 9.1) Структура фильтра feColorMatrix.В Лекции 6 мы проходили несколько типов трансформации – translate, rotate, scale, skewX, skewY. Тип трансформации matrix представлял собой лишь способ записи отдельных преобразованиий. Подобно трансформациям, фильтр feColorMatrix также представляется в виде , hueRotate и liminanceToAlpha могут быть выражены при помощи значения matrix. Рассмотрим вначале самостоятельные типы, примеры которых приводятся в табл. 9.1.
| № | Код | Вид в браузере |
|---|---|---|
| 9.1.1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="350"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrix1.svg
</desc>
<defs>
<filter id="myFilter" filterUnits="userSpaceOnUse"
x="10" y="175" width="186" height="125">
<feImage xlink:href="#MyImage" result="image1"/>
<feColorMatrix id="color" in="image1"
type="luminanceToAlpha"/>
</filter>
<image id="MyImage" x="10" y="175" width="186" height="125"
xlink:href="sea2.jpg"/>
</defs>
<rect x="0" y="0" width="200" height="200"
filter="url(#myFilter)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
</svg>
|
![]() |
| Описание | ||
Значение luminanceToAlpha превращает изображение в негатив черно-белой feColorMatrix не поддерживает каких-либо числовых атрибутов. |
||
| № | Код | Описание |
| 9.1.2 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrix2.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color1" in="image1"
type="saturate" values="0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color2" in="image1"
type="saturate" values="0.2"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color3" in="image1"
type="saturate" values="0.4"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color4" in="image1"
type="saturate" values="0.6"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color5" in="image1"
type="saturate" values="0.8"/>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
values="0"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
values="0.2"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
values="0.4"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
values="0.6"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
values="0.8"</text>
</svg>
|
Значение "values (диапазон от 0 до 1 ) позволяет плавно управлять цветом изображения. При значении values="0" получается черно-белое изображение. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.1.3 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrix3.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color1" in="image1"
type="hueRotate" values="0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color2" in="image1"
type="hueRotate" values="30"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color3" in="image1"
type="hueRotate" values="60"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color4" in="image1"
type="hueRotate" values="90"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color5" in="image1"
type="hueRotate" values="120"/>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
values="0"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
values="30"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
values="60"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
values="90"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
values="120"</text>
</svg>
|
Значение hueRotate позволяет смещать цветовые оттенки изображения. Диапазон от 0 до 360 градусов атрибута values соответствует всей 0 до 120 градусов. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.1.4 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrix4.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color1" in="image1"
type="hueRotate" values="150"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color2" in="image1"
type="hueRotate" values="180"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color3" in="image1"
type="hueRotate" values="210"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color4" in="image1"
type="hueRotate" values="240"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color5" in="image1"
type="hueRotate" values="270"/>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
values="150"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
values="180"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
values="210"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
values="240"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
values="270"</text>
</svg>
|
Этот пример охватывает изменения от 150 до 270 градусов. |
| Вид в браузере | ||
![]() |
||
Рассмотрим теперь матричную запись значений атрибута type. В самом общем случае тип matrix записывается в виде матрицы следующим образом:
Здесь R', G', B', A' – измененные компоненты изображения в каналах A – прозрачность), R, G, B, A – исходные. Эквивалентная запись для подстановки в
type="matrix" values="a11 a12 a13 a14 a15 a21 a22 a23 a24 a25 a31 a32 a33 a34 a35 a41 a42 a43 a44 a45"
Допускается запись с отступами:
values="a11 a12 a13 a14 a15 a21 a22 a23 a24 a25 a31 a32 a33 a34 a35 a41 a42 a43 a44 a45"
А также запись в столбик, с переносом на новые строки:
values="a11 a12 a13 a14 a15 a21 a22 a23 a24 a25 a31 a32 a33 a34 a35 a41 a42 a43 a44 a45"
Как уже отмечалось, тип matrix не вносит изменений в изображение, это всего лишь форма записи других значений атрибута type. Тип представляется следующей матрицей:
Где s – одиночное целое 0 до 1.
Тип hueRotate представляется следующей матрицей:
Элементы a11 a12 a13 и т. д. вычисляются отдельно по следующей схеме:
где angle – значение угла в градусах. Здесь мы сталкиваемся с двумя новыми понятиями – умножением матрицы на число и сложением матриц. Рассмотрим их отдельно. Для умножения матрицы на число k нужно умножить каждый элемент матицы на это число:
Сложение матриц определяется довольно простым образом:
$$\left | \begin{array}{ccc} a_{11} a_{12} a_{13}\\ a_{21} a_{22} a_{23}\\ a_{31} a_{32} a_{33} \end{array} \right | + \left | \begin{array}{ccc} b_{11} b_{12} b_{13}\\ b_{21} b_{22} b_{23}\\ b_{31} b_{32} b_{33} \end{array} \right | = \left | \begin{array}{ccc} a_{11}+ b_{11} a_{12}+ b_{12} a_{13}+ b_{13}\\ a_{21}+ b_{21} a_{22}+ b_{22} a_{23}+ b_{23}\\ a_{31}+ b_{31} a_{32}+ b_{32} a_{33}+ b_{33} \end{array} \right |$$Тип luminanceToAlpha, который не содержит возможности изменять какие-либо параметры, представляется так:
Применять эту форму записи не сложно. Вычислять матрицы можно вручную или при помощи программы matrix.
| № | Код |
|---|---|
| 9.2.1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrixM1.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color1" in="image1"
type="matrix" values="1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color2" in="image1"
type="matrix" values="1 1 1 1 1
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color3" in="image1"
type="matrix" values="1 0 0 0 0
1 1 1 1 1
0 0 1 0 0
0 0 0 1 0"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color4" in="image1"
type="matrix" values="1 0 0 0 0
0 1 0 0 0
1 1 1 1 1
0 0 0 1 0"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color5" in="image1"
type="matrix" values="1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
1 1 1 1 1"/>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
Исходная матрица</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
R = "1 1 1 1 1 "</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
G = "1 1 1 1 1 "</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
B = "1 1 1 1 1 "</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
A = "1 1 1 1 1 "</text>
</svg>
|
| Вид в браузере | |
![]() |
|
| Описание | |
Мы подставили простые значения матрицы, соответствующие цветопередачи в каналах R, G, B и A. |
|
| № | Код |
| 9.2.2 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrixM2.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color1" in="image1"
type="matrix" values="0.213 0.715 0.072 0 0
0.213 0.715 0.072 0 0
0.213 0.715 0.072 0 0
0 0 0 1 0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color2" in="image1"
type="matrix" values="0.37 0.572 0.058 0 0
0.17 0.772 0.058 0 0
0.17 0.572 0.258 0 0
0 0 0 1 0"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color3" in="image1"
type="matrix" values="0.213 0.429 0.043 0 0
0.128 0.829 0.043 0 0
0.128 0.429 0.443 0 0
0 0 0 1 0"/>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
values="0"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
values="0.2"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
values="0.4"</text>
</svg>
|
| Вид в браузере | |
![]() |
|
| Описание | |
Вычисление нескольких матриц для значения При При При Эти значения и были подставлены в код |
|
| № | Код |
| 9.2.3 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrixM3.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color1" in="image1"
type="matrix" values="1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color2" in="image1"
type="matrix" values="0.784 -0.263 0.479 0 0
0.102 1.032 -0.133 0 0
-0.369 0.46 0.909 0 0
0 0 0 1 0"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feColorMatrix id="color3" in="image1"
type="matrix" values="0.42 -0.261 0.841 0 0
0.231 0.978 -0.209 0 0
-0.576 0.979 0.596 0 0
0 0 0 1 0"/>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
values="0"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
values="30"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
values="60"</text>
</svg>
|
| Вид в браузере | |
![]() |
|
| Описание | |
Вычисление нескольких матриц для значения При При При |
|
| № | Код |
| 9.2.4 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="210" height="350"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title>Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feColorMatrixM4.svg
</desc>
<defs>
<filter id="myFilter" filterUnits="userSpaceOnUse"
x="10" y="175" width="186" height="125">
<feImage xlink:href="#MyImage" result="image1"/>
<feColorMatrix id="color" in="image1"
type="matrix" values="0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0.2125 0.7154 0.0721 0 0"/>
</filter>
<image id="MyImage" x="10" y="175" width="186" height="125"
xlink:href="sea2.jpg"/>
</defs>
<rect x="0" y="0" width="200" height="200"
filter="url(#myFilter)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
</svg>
|
| Вид в браузере | |
![]() |
|
| Описание | |
Задаваемая матрица эквивалентна типу luminanceToAlpha |
Фильтр feComponentTransfer – мощный инструмент для редактирования яркости, контраста и цветового баланса изображения. Его структура имеет следующий вид (рис. 9. 2):
(рис 9.2) Структура фильтра feComponentTransferНа рисунке изображена совокупность атрибутов для одного канала R, выражаемого элементов feFuncR. В состав фильтра входят четыре функции, для каждого из каналов, причем в каждом из функций поддерживаются индивидуальные настройки атрибутов. В табл. 9.3 приводится описание атрибутов фильтра feComponentTransfer.
| № | Название |
|---|---|
| 9.3.1 | type |
| Описание | |
Тип преобразования в заданном канале. Возможны следующие identity – исходное значение, без преобразований.table – преобразование характеризуется набором значений. – преобразование также характеризуется набором значений, оно носит резко выраженный характер.
где
Описание коэффициентов |
|
| Диапазон значений | |
identity | table | | linear | gamma |
|
| Значение по умолчанию | |
| – | |
| № | Название |
| 9.3.2 | tableValues |
| Описание | |
Список значений, по которому осуществляется преобразование. В простейшем случае – набор четырех чисел для каждого из каналов R, G, B, A. |
|
| Диапазон значений | |
Набор значений типа <number> |
|
| Значение по умолчанию | |
| – | |
| № | Название |
| 9.3.3 | |
| Описание | |
| Значение яркости. | |
| Диапазон значений | |
<number> |
|
| Значение по умолчанию | |
1 |
|
| № | Название |
| 9.3.4 | |
| Описание | |
При задании type="linear" этот атрибут характеризует область действия |
|
| Диапазон значений | |
<number> |
|
| Значение по умолчанию | |
0 |
|
| № | Название |
| 9.3.5 | |
| Описание | |
При задании type="gamma" этот атрибут характеризует амплитуду экспоненциальной функции. Визуально это представляется в степени выраженности преобразования. |
|
| Диапазон значений | |
<number> |
|
| Значение по умолчанию | |
1 |
|
| № | Название |
| 9.3.6 | |
| Описание | |
При задании type="gamma" этот атрибут характеризует степень экспоненциальной функции. |
|
| Диапазон значений | |
<number> |
|
| Значение по умолчанию | |
1 |
|
| № | Название |
| 9.3.6 | Offset |
| Описание | |
При задании type="gamma" этот атрибут характеризует смещение экспоненциальной функции. |
|
| Диапазон значений | |
<number> |
|
| Значение по умолчанию | |
0 |
Следует отметить, что само по себе сочетание атрибутов фильтра feComponentTransfer предоставляет огромный диапазон преобразований изображений, тогда как для базовых операций требуется ограниченное их количество. В табл. 9.4 приводятся примеры использования этого фильтра.
| № | Код | Вид в браузере |
|---|---|---|
| 9.4.1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="350"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer1.svg
</desc>
<defs>
<filter id="myFilter" filterUnits="userSpaceOnUse"
x="10" y="175" width="186" height="125">
<feImage xlink:href="#MyImage" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="identity"/>
<feFuncG type="identity"/>
<feFuncB type="identity"/>
<feFuncA type="linear" slope="0.5" intercept="0"/>
</feComponentTransfer>
</filter>
<image id="MyImage" x="10" y="175" width="186" height="125"
xlink:href="sea2.jpg"/>
</defs>
<rect x="10" y="175" width="186" height="125"
filter="url(#myFilter)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
</svg>
|
![]() |
| Описание | ||
Изменение изображения в канале прозрачности ( A ). |
||
| № | Код | Описание |
| 9.4.2 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer2.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="identity"/>
<feFuncG type="identity"/>
<feFuncB type="identity"/>
<feFuncA type="linear" slope="1" intercept="0"/>
</feComponentTransfer>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="identity"/>
<feFuncG type="identity"/>
<feFuncB type="identity"/>
<feFuncA type="linear" slope="0.8" intercept="0"/>
</feComponentTransfer>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="identity"/>
<feFuncG type="identity"/>
<feFuncB type="identity"/>
<feFuncA type="linear" slope="0.6" intercept="0"/>
</feComponentTransfer>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="identity"/>
<feFuncG type="identity"/>
<feFuncB type="identity"/>
<feFuncA type="linear" slope="0.4" intercept="0"/>
</feComponentTransfer>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="identity"/>
<feFuncG type="identity"/>
<feFuncB type="identity"/>
<feFuncA type="linear" slope="0.2" intercept="0"/>
</feComponentTransfer>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
slope="1"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
slope="0.8"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
slope="0.6"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
slope="0.4"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
slope="0.2"</text>
</svg>
|
Примеры уменьшения яркости изображения. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.4.3 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer3.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="identity"/>
<feFuncG type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncB type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncG type="identity"/>
<feFuncB type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncG type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncB type="identity"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncG type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncB type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncG type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncB type="gamma" amplitude="0" exponent="1" offset="0"/>
<feFuncA type="gamma" amplitude="0" exponent="1" offset="0"/>
</feComponentTransfer>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
feFuncR type="identity"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
feFuncG type="identity"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
feFuncB type="identity"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
feFuncA type="identity"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
feFuncR (G,B,A) type="gamma" </text>
</svg>
|
Если оставить значения заданного канала, например R, неизменным ( type="identity" ), а остальные каналы выключить, задавая нулевое значение амплитуды, то изображение будет принимать тон этого канала. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.4.4 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer4.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="1.5" intercept="0"/>
<feFuncG type="linear" slope="1.5" intercept="0"/>
<feFuncB type="linear" slope="1.5" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="2" intercept="0"/>
<feFuncG type="linear" slope="2" intercept="0"/>
<feFuncB type="linear" slope="2" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="3" intercept="0"/>
<feFuncG type="linear" slope="3" intercept="0"/>
<feFuncB type="linear" slope="3" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="3" intercept="0"/>
<feFuncG type="linear" slope="3" intercept="0"/>
<feFuncB type="linear" slope="1" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="1" intercept="0"/>
<feFuncG type="linear" slope="3" intercept="0"/>
<feFuncB type="linear" slope="3" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
type="linear" slope="1.5"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
type="linear" slope="2"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
type="linear" slope="3"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
type="linear" slope="3" (B) slope="1"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
type="linear" slope="3" (R) slope="1"</text>
</svg>
|
Регулировка цветового баланса в задаваемых каналах. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.4.5 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer5.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="0.8" intercept="0"/>
<feFuncG type="linear" slope="0.8" intercept="0"/>
<feFuncB type="linear" slope="0.8" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="0.6" intercept="0"/>
<feFuncG type="linear" slope="0.6" intercept="0"/>
<feFuncB type="linear" slope="0.6" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="0.4" intercept="0"/>
<feFuncG type="linear" slope="0.4" intercept="0"/>
<feFuncB type="linear" slope="0.4" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="0.4" intercept="0"/>
<feFuncG type="linear" slope="0.4" intercept="0"/>
<feFuncB type="linear" slope="1" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="linear" slope="1" intercept="0"/>
<feFuncG type="linear" slope="0.4" intercept="0"/>
<feFuncB type="linear" slope="0.4" intercept="0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
type="linear" slope="0.8"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
type="linear" slope="0.6"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
type="linear" slope="0.4"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
type="linear" slope="0.4" (B) slope="1"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
type="linear" slope="0.4" (R) slope="1"</text>
</svg>
|
Регулировка цветового баланса в сочетании с уменьшением яркости изображения. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.4.6 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer6.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues=""/>
<feFuncG type="table" tableValues=""/>
<feFuncB type="table" tableValues=""/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="0 0 0 0"/>
<feFuncG type="table" tableValues="0 0 0 0"/>
<feFuncB type="table" tableValues="0 0 0 0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 1 1 1"/>
<feFuncG type="table" tableValues="1 1 1 1"/>
<feFuncB type="table" tableValues="1 1 1 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="0 0 0 1"/>
<feFuncG type="table" tableValues="0 0 0 1"/>
<feFuncB type="table" tableValues="0 0 0 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 1 1 0"/>
<feFuncG type="table" tableValues="1 1 1 0"/>
<feFuncB type="table" tableValues="1 1 1 0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
type="table" tableValues=""</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
type="table" tableValues="0 0 0 0"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
type="table" tableValues="1 1 1 1"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
type="table" tableValues="0 0 0 1"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
type="table" tableValues="1 1 1 0"</text>
</svg>
|
Набор tableValues с предельными значениями. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.4.7 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer7.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="0 1 1 1"/>
<feFuncG type="table" tableValues="0 1 1 1"/>
<feFuncB type="table" tableValues="0 1 1 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 0 0 0"/>
<feFuncG type="table" tableValues="1 0 0 0"/>
<feFuncB type="table" tableValues="1 0 0 0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 0 1 1"/>
<feFuncG type="table" tableValues="1 0 1 1"/>
<feFuncB type="table" tableValues="1 0 1 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="0 1 0 0"/>
<feFuncG type="table" tableValues="0 1 0 0"/>
<feFuncB type="table" tableValues="0 1 0 0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="0 1 1 0"/>
<feFuncG type="table" tableValues="0 1 1 0"/>
<feFuncB type="table" tableValues="0 1 1 0"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
type="table" tableValues="0 1 1 1"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
type="table" tableValues="1 0 0 0"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
type="table" tableValues="1 0 1 1"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
type="table" tableValues="0 1 0 0"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
type="table" tableValues="0 1 1 0"</text>
</svg>
|
Набор tableValues позволяет придавать изображению сюрреалистические оттенки. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.4.8 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="420" height="450"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feComponentTransfer8.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="215" y="10" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 1 1 1"/>
<feFuncG type="table" tableValues="1 0 0 1"/>
<feFuncB type="table" tableValues="1 0 0 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="10" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 0 0 1"/>
<feFuncG type="table" tableValues="1 1 1 1"/>
<feFuncB type="table" tableValues="1 0 0 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="215" y="155" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 0 0 1"/>
<feFuncG type="table" tableValues="1 0 0 1"/>
<feFuncB type="table" tableValues="1 1 1 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="10" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 1 1 1"/>
<feFuncG type="table" tableValues="1 1 1 1"/>
<feFuncB type="table" tableValues="1 0 0 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="215" y="300" width="186" height="125">
<feImage xlink:href="sea2.jpg" result="image1"/>
<feComponentTransfer in="image1">
<feFuncR type="table" tableValues="1 1 1 1"/>
<feFuncG type="table" tableValues="1 0 0 1"/>
<feFuncB type="table" tableValues="1 1 1 1"/>
<feFuncA type="identity"/>
</feComponentTransfer>
</filter>
</defs>
<rect x="10" y="155" width="186" height="125"
filter="url(#myFilter1)"/>
<rect x="10" y="300" width="186" height="125"
filter="url(#myFilter2)"/>
<rect x="215" y="10" width="186" height="125"
filter="url(#myFilter3)"/>
<rect x="215" y="155" width="186" height="125"
filter="url(#myFilter4)"/>
<rect x="215" y="300" width="186" height="125"
filter="url(#myFilter5)"/>
<!--Исходное изображение-->
<image x="10" y="10" width="186" height="125"
xlink:href="sea2.jpg"/>
<!--Подписи-->
<text x="10" y="145"
style="fill: black; font-size: 12px">
sea2.jpg</text>
<text x="215" y="145" style="fill: black; font-size: 12px">
(G, B) "1 0 0 1" (R) "1 1 1 1"</text>
<text x="10" y="290" style="fill: black; font-size: 12px">
(R, B) "1 0 0 1" (B) "1 1 1 1"</text>
<text x="215" y="290" style="fill: black; font-size: 12px">
(R, G) "1 0 0 1" (B) "1 1 1 1"</text>
<text x="10" y="435" style="fill: black; font-size: 12px">
(B) "1 0 0 1" (R, G) "1 1 1 1"</text>
<text x="215" y="435" style="fill: black; font-size: 12px">
(G) "1 0 0 1" (R, B) "1 1 1 1"</text>
</svg>
|
Набор tableValues со значениями, смещающими цветовой баланс в сторону основных и дополнительных цветов. |
| Вид в браузере | ||
![]() |
||
Фильтр feTurbulence содержит встроенные средства для генерации структуры, напоминающей облака или мрамор. В сочетании с фильтрами освещения (см. Лекцию 10) эти текстуры могут быть окрашены в произвольные цвета, а также менять свой вид (например, выглядеть как мешковина). Структура этого фильтра выглядит так (рис. 9.3 ):
(рис 9.3) Структура фильтра feTurbulenceАтрибуты отвечают за внешний вид генерируемой структуры: зернистость, размер волокон, их количество и направление. В табл. 9.5 приводится описание атрибутов фильтра.
| № | Название |
|---|---|
| 9.5.1 | baseFrequency |
| Описание | |
| Частота генерации шума, которая представляется в виде двух чисел, определяющих горизонтальное и вертикальное направления. Если задается одно число, то оно по умолчанию принимается для обоих направлений. | |
| Диапазон значений | |
<number> <number> |
|
| Значение по умолчанию | |
0 |
|
| № | Название |
| 9.5.2 | numOctaves |
| Описание | |
| Число гармоник генерации шума. | |
| Диапазон значений | |
<integer> |
|
| Значение по умолчанию | |
1 |
|
| № | Название |
| 9.5.3 | |
| Описание | |
| Начальное число на основании которого генерируются случайные числа. | |
| Диапазон значений | |
<number> |
|
| Значение по умолчанию | |
0 |
|
| № | Название |
| 9.5.4 | stitchTiles |
| Описание | |
При значении stitch сглаживаются края генерируемых линий. |
|
| Диапазон значений | |
stitch | noStitch |
|
| Значение по умолчанию | |
noStitch |
|
| № | Название |
| 9.5.5 | type |
| Описание | |
| Тип генерируемой текстуры. | |
| Диапазон значений | |
fractalNoise | turbulence |
|
| Значение по умолчанию | |
turbulence |
В табл. 9.6 приводятся примеры использования этого фильтра.
| № | Код | Вид в браузере |
|---|---|---|
| 9.6.1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="200"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feTurbulence1.svg
</desc>
<defs>
<filter id="myFilter" filterUnits="userSpaceOnUse"
x="0" y="0" width="200" height="200">
<feTurbulence type="fractalNoise" baseFrequency="0.01"
numOctaves="4" seed="0"/>
</filter>
</defs>
<rect x="0" y="0" width="200" height="200"
filter="url(#myFilter)"/>
</svg>
|
![]() |
| Описание | ||
Тип fractalNoise наиболее пригоден для создания структуры, напоминающей облака. |
||
| № | Код | Описание |
| 9.6.2 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="460" height="610"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feTurbulence2.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="0" y="0" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.01"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="150" y="0" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.02"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="300" y="0" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.05"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="0" y="150" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.1"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="150" y="150" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.2"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter6" filterUnits="userSpaceOnUse"
x="300" y="150" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.3"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter7" filterUnits="userSpaceOnUse"
x="0" y="300" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.4"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter8" filterUnits="userSpaceOnUse"
x="150" y="300" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.5"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter9" filterUnits="userSpaceOnUse"
x="300" y="300" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.6"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter10" filterUnits="userSpaceOnUse"
x="0" y="450" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.7"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter11" filterUnits="userSpaceOnUse"
x="150" y="450" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter12" filterUnits="userSpaceOnUse"
x="300" y="450" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="1"
numOctaves="4" seed="0"/>
</filter>
</defs>
<rect x="0" y="0" width="150" height="150"
filter="url(#myFilter1)"/>
<rect x="150" y="0" width="150" height="150"
filter="url(#myFilter2)"/>
<rect x="300" y="0" width="150" height="150"
filter="url(#myFilter3)"/>
<rect x="0" y="150" width="150" height="150"
filter="url(#myFilter4)"/>
<rect x="150" y="150" width="150" height="150"
filter="url(#myFilter5)"/>
<rect x="300" y="150" width="150" height="150"
filter="url(#myFilter6)"/>
<rect x="0" y="300" width="150" height="150"
filter="url(#myFilter7)"/>
<rect x="150" y="300" width="150" height="150"
filter="url(#myFilter8)"/>
<rect x="300" y="300" width="150" height="150"
filter="url(#myFilter9)"/>
<rect x="0" y="450" width="150" height="150"
filter="url(#myFilter10)"/>
<rect x="150" y="450" width="150" height="150"
filter="url(#myFilter11)"/>
<rect x="300" y="450" width="150" height="150"
filter="url(#myFilter12)"/>
<!--Вспомогательные фигуры-->
<rect x="0" y="0" width="450" height="600"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="150" y="0" width="150" height="600"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="0" y="150" width="450" height="150"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="0" y="450" width="450" height="150"
style="fill:none;stroke:black; stroke-width:2"/>
<!--Подписи-->
<text x="10" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.01"</text>
<text x="160" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.02"</text>
<text x="310" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.05"</text>
<text x="10" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1"</text>
<text x="160" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.2"</text>
<text x="310" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.3"</text>
<text x="10" y="315" style="fill: black; font-size: 12px">
baseFrequency="0.4"</text>
<text x="160" y="315" style="fill: black; font-size: 12px">
baseFrequency="0.5"</text>
<text x="310" y="315" style="fill: black; font-size: 12px">
baseFrequency="0.6"</text>
<text x="10" y="465" style="fill: black; font-size: 12px">
baseFrequency="0.7"</text>
<text x="160" y="465" style="fill: black; font-size: 12px">
baseFrequency="0"</text>
<text x="310" y="465" style="fill: black; font-size: 12px">
baseFrequency="1"</text>
</svg>
|
Атрибут baseFrequency за управление ячеистой структуры. Чем больше значение этого атрибута, тем меньше размер структуры. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.6.3 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="460" height="610"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feTurbulence3.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="0" y="0" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.01"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="150" y="0" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.02"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="300" y="0" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.05"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="0" y="150" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.1"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="150" y="150" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.2"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter6" filterUnits="userSpaceOnUse"
x="300" y="150" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.3"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter7" filterUnits="userSpaceOnUse"
x="0" y="300" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.4"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter8" filterUnits="userSpaceOnUse"
x="150" y="300" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.5"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter9" filterUnits="userSpaceOnUse"
x="300" y="300" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.6"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter10" filterUnits="userSpaceOnUse"
x="0" y="450" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.7"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter11" filterUnits="userSpaceOnUse"
x="150" y="450" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter12" filterUnits="userSpaceOnUse"
x="300" y="450" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="1"
numOctaves="4" seed="0"/>
</filter>
</defs>
<rect x="0" y="0" width="150" height="150"
filter="url(#myFilter1)"/>
<rect x="150" y="0" width="150" height="150"
filter="url(#myFilter2)"/>
<rect x="300" y="0" width="150" height="150"
filter="url(#myFilter3)"/>
<rect x="0" y="150" width="150" height="150"
filter="url(#myFilter4)"/>
<rect x="150" y="150" width="150" height="150"
filter="url(#myFilter5)"/>
<rect x="300" y="150" width="150" height="150"
filter="url(#myFilter6)"/>
<rect x="0" y="300" width="150" height="150"
filter="url(#myFilter7)"/>
<rect x="150" y="300" width="150" height="150"
filter="url(#myFilter8)"/>
<rect x="300" y="300" width="150" height="150"
filter="url(#myFilter9)"/>
<rect x="0" y="450" width="150" height="150"
filter="url(#myFilter10)"/>
<rect x="150" y="450" width="150" height="150"
filter="url(#myFilter11)"/>
<rect x="300" y="450" width="150" height="150"
filter="url(#myFilter12)"/>
<!--Вспомогательные фигуры-->
<rect x="0" y="0" width="450" height="600"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="150" y="0" width="150" height="600"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="0" y="150" width="450" height="150"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="0" y="450" width="450" height="150"
style="fill:none;stroke:black; stroke-width:2"/>
<!--Подписи-->
<text x="10" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.01"</text>
<text x="160" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.02"</text>
<text x="310" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.05"</text>
<text x="10" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1"</text>
<text x="160" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.2"</text>
<text x="310" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.3"</text>
<text x="10" y="315" style="fill: black; font-size: 12px">
baseFrequency="0.4"</text>
<text x="160" y="315" style="fill: black; font-size: 12px">
baseFrequency="0.5"</text>
<text x="310" y="315" style="fill: black; font-size: 12px">
baseFrequency="0.6"</text>
<text x="10" y="465" style="fill: black; font-size: 12px">
baseFrequency="0.7"</text>
<text x="160" y="465" style="fill: black; font-size: 12px">
baseFrequency="0"</text>
<text x="310" y="465" style="fill: black; font-size: 12px">
baseFrequency="1"</text>
</svg>
|
Тип turbulence позволяет имитировать мраморную поверхность. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.6.4 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="460" height="310"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feTurbulence4.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="0" y="0" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0,0.1"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="150" y="0" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0,0.1"
numOctaves="4" seed="10"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="300" y="0" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.01, 0.1"
numOctaves="4" seed="1"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="0" y="150" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.1,0.01"
numOctaves="4" seed="1"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="150" y="150" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.1, 0"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter6" filterUnits="userSpaceOnUse"
x="300" y="150" width="150" height="150">
<feTurbulence type="fractalNoise" baseFrequency="0.1,0"
numOctaves="4" seed="10"/>
</filter>
</defs>
<rect x="0" y="0" width="150" height="150"
filter="url(#myFilter1)"/>
<rect x="150" y="0" width="150" height="150"
filter="url(#myFilter2)"/>
<rect x="300" y="0" width="150" height="150"
filter="url(#myFilter3)"/>
<rect x="0" y="150" width="150" height="150"
filter="url(#myFilter4)"/>
<rect x="150" y="150" width="150" height="150"
filter="url(#myFilter5)"/>
<rect x="300" y="150" width="150" height="150"
filter="url(#myFilter6)"/>
<!--Вспомогательные фигуры-->
<rect x="0" y="0" width="450" height="300"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="150" y="0" width="150" height="300"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="0" y="150" width="450" height="150"
style="fill:none;stroke:black; stroke-width:2"/>
<!--Подписи-->
<text x="10" y="15" style="fill: black; font-size: 12px">
baseFrequency="0,0.1" </text>
<text x="10" y="30" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="10" y="45" style="fill: black; font-size: 12px">
seed="0"</text>
<text x="160" y="15" style="fill: black; font-size: 12px">
baseFrequency="0,0.1" </text>
<text x="160" y="30" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="160" y="45" style="fill: black; font-size: 12px">
seed="10"</text>
<text x="304" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.01, 0.1" </text>
<text x="304" y="30" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="304" y="45" style="fill: black; font-size: 12px">
seed="1"</text>
<text x="5" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1,0.01"</text>
<text x="5" y="180" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="5" y="195" style="fill: black; font-size: 12px">
seed="1"</text>
<text x="160" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1, 0" </text>
<text x="160" y="180" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="160" y="195" style="fill: black; font-size: 12px">
seed="0"</text>
<text x="310" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1,0" </text>
<text x="310" y="180" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="310" y="195" style="fill: black; font-size: 12px">
seed="10"</text>
</svg>
|
Атрибут отвечает за выраженность слоистой структуры. Пара значений атрибута baseFrequency задает направление структуры. |
| Вид в браузере | ||
![]() |
||
| № | Код | Описание |
| 9.6.5 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="460" height="310"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<title> Лекция 9. Фильтры. Часть III </title>
<desc>
Пример feTurbulence5.svg
</desc>
<defs>
<filter id="myFilter1" filterUnits="userSpaceOnUse"
x="0" y="0" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0,0.1"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter2" filterUnits="userSpaceOnUse"
x="150" y="0" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0,0.1"
numOctaves="4" seed="10"/>
</filter>
<filter id="myFilter3" filterUnits="userSpaceOnUse"
x="300" y="0" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.01, 0.1"
numOctaves="4" seed="1"/>
</filter>
<filter id="myFilter4" filterUnits="userSpaceOnUse"
x="0" y="150" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.1,0.01"
numOctaves="4" seed="1"/>
</filter>
<filter id="myFilter5" filterUnits="userSpaceOnUse"
x="150" y="150" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.1, 0"
numOctaves="4" seed="0"/>
</filter>
<filter id="myFilter6" filterUnits="userSpaceOnUse"
x="300" y="150" width="150" height="150">
<feTurbulence type="turbulence" baseFrequency="0.1,0"
numOctaves="4" seed="10"/>
</filter>
</defs>
<rect x="0" y="0" width="150" height="150"
filter="url(#myFilter1)"/>
<rect x="150" y="0" width="150" height="150"
filter="url(#myFilter2)"/>
<rect x="300" y="0" width="150" height="150"
filter="url(#myFilter3)"/>
<rect x="0" y="150" width="150" height="150"
filter="url(#myFilter4)"/>
<rect x="150" y="150" width="150" height="150"
filter="url(#myFilter5)"/>
<rect x="300" y="150" width="150" height="150"
filter="url(#myFilter6)"/>
<!--Вспомогательные фигуры-->
<rect x="0" y="0" width="450" height="300"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="150" y="0" width="150" height="300"
style="fill:none;stroke:black; stroke-width:2"/>
<rect x="0" y="150" width="450" height="150"
style="fill:none;stroke:black; stroke-width:2"/>
<!--Подписи-->
<text x="10" y="15" style="fill: black; font-size: 12px">
baseFrequency="0,0.1" </text>
<text x="10" y="30" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="10" y="45" style="fill: black; font-size: 12px">
seed="0"</text>
<text x="160" y="15" style="fill: black; font-size: 12px">
baseFrequency="0,0.1" </text>
<text x="160" y="30" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="160" y="45" style="fill: black; font-size: 12px">
seed="10"</text>
<text x="304" y="15" style="fill: black; font-size: 12px">
baseFrequency="0.01, 0.1" </text>
<text x="304" y="30" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="304" y="45" style="fill: black; font-size: 12px">
seed="1"</text>
<text x="5" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1,0.01"</text>
<text x="5" y="180" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="5" y="195" style="fill: black; font-size: 12px">
seed="1"</text>
<text x="160" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1, 0" </text>
<text x="160" y="180" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="160" y="195" style="fill: black; font-size: 12px">
seed="0"</text>
<text x="310" y="165" style="fill: black; font-size: 12px">
baseFrequency="0.1,0" </text>
<text x="310" y="180" style="fill: black; font-size: 12px">
numOctaves="4"</text>
<text x="310" y="195" style="fill: black; font-size: 12px">
seed="10"</text>
</svg>
|
Слоистая стуктура и ее направления для типа turbulence. |
| Вид в браузере | ||
![]() |
||
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.