NodePipeline/NodePipeline.Application/Nodes/GaussianBlurNode.cs
2026-01-02 20:55:25 +03:00

27 lines
917 B
C#

using NodePipeline.Abstractions.Attributes;
using NodePipeline.Abstractions.Attributes.Validation.NodeField;
using NodePipeline.Abstractions.Interfaces.Nodes;
using NodePipeline.Abstractions.Models;
using NodePipeline.Application.ImageProcessing;
namespace NodePipeline.Application.Nodes;
public class GaussianBlurNode : INode
{
[NodeField(FieldDirection.Input)] public NodeField<ImageBuffer> Input { get; set; } = null!;
[NodeField(FieldDirection.Parameter)]
[HasValueBetween(0, 300)]
public NodeField<int> Radius { get; set; } = null!;
[NodeField(FieldDirection.Output)] public NodeField<ImageBuffer> Output { get; set; } = null!;
public void Execute()
{
var src = Input.Value;
var dst = new ImageBuffer(src.Width, src.Height);
var kernel = GaussianKernel.Create(Radius.Value);
Convolution.Apply(src, dst, kernel);
Output.Value = dst;
}
}