diff --git a/XP.Camera/BaslerCameraController.cs b/XP.Camera/BaslerCameraController.cs
index 1155a2e..e6acaca 100644
--- a/XP.Camera/BaslerCameraController.cs
+++ b/XP.Camera/BaslerCameraController.cs
@@ -1,8 +1,7 @@
using Basler.Pylon;
using Serilog;
-
-using CameraImageGrabbedEventArgs = XP.Camera.ImageGrabbedEventArgs;
using CameraGrabErrorEventArgs = XP.Camera.GrabErrorEventArgs;
+using CameraImageGrabbedEventArgs = XP.Camera.ImageGrabbedEventArgs;
namespace XP.Camera;
@@ -177,7 +176,6 @@ public class BaslerCameraController : ICameraController
}
}
-
///
public void ExecuteSoftwareTrigger()
{
@@ -460,7 +458,6 @@ public class BaslerCameraController : ICameraController
}
}
-
///
/// ConnectionLost 事件处理。在 pylon SDK 事件线程上调用。
///
@@ -514,4 +511,4 @@ public class BaslerCameraController : ICameraController
throw new InvalidOperationException("Camera is not connected. Call Open() first.");
}
}
-}
+}
\ No newline at end of file
diff --git a/XP.Camera/CameraExceptions.cs b/XP.Camera/CameraExceptions.cs
index 0b29fcb..37b2fb7 100644
--- a/XP.Camera/CameraExceptions.cs
+++ b/XP.Camera/CameraExceptions.cs
@@ -3,23 +3,44 @@ namespace XP.Camera;
/// 所有相机相关错误的基类异常。
public class CameraException : Exception
{
- public CameraException() { }
- public CameraException(string message) : base(message) { }
- public CameraException(string message, Exception innerException) : base(message, innerException) { }
+ public CameraException()
+ { }
+
+ public CameraException(string message) : base(message)
+ {
+ }
+
+ public CameraException(string message, Exception innerException) : base(message, innerException)
+ {
+ }
}
/// 当相机连接意外断开时抛出的异常。
public class ConnectionLostException : CameraException
{
- public ConnectionLostException() { }
- public ConnectionLostException(string message) : base(message) { }
- public ConnectionLostException(string message, Exception innerException) : base(message, innerException) { }
+ public ConnectionLostException()
+ { }
+
+ public ConnectionLostException(string message) : base(message)
+ {
+ }
+
+ public ConnectionLostException(string message, Exception innerException) : base(message, innerException)
+ {
+ }
}
/// 当系统中无可用相机设备时抛出的异常。
public class DeviceNotFoundException : CameraException
{
- public DeviceNotFoundException() { }
- public DeviceNotFoundException(string message) : base(message) { }
- public DeviceNotFoundException(string message, Exception innerException) : base(message, innerException) { }
-}
+ public DeviceNotFoundException()
+ { }
+
+ public DeviceNotFoundException(string message) : base(message)
+ {
+ }
+
+ public DeviceNotFoundException(string message, Exception innerException) : base(message, innerException)
+ {
+ }
+}
\ No newline at end of file
diff --git a/XP.Camera/CameraFactory.cs b/XP.Camera/CameraFactory.cs
index e470d15..de85f89 100644
--- a/XP.Camera/CameraFactory.cs
+++ b/XP.Camera/CameraFactory.cs
@@ -15,4 +15,4 @@ public class CameraFactory : ICameraFactory
_ => throw new NotSupportedException($"不支持的相机品牌: {cameraType}")
};
}
-}
+}
\ No newline at end of file
diff --git a/XP.Camera/CameraModels.cs b/XP.Camera/CameraModels.cs
index 534ac46..713d25f 100644
--- a/XP.Camera/CameraModels.cs
+++ b/XP.Camera/CameraModels.cs
@@ -36,4 +36,4 @@ public class GrabErrorEventArgs : EventArgs
ErrorCode = errorCode;
ErrorDescription = errorDescription;
}
-}
+}
\ No newline at end of file
diff --git a/XP.Camera/ICameraController.cs b/XP.Camera/ICameraController.cs
index 6c47a51..1d25a7a 100644
--- a/XP.Camera/ICameraController.cs
+++ b/XP.Camera/ICameraController.cs
@@ -28,18 +28,29 @@ public interface ICameraController : IDisposable
void StopGrabbing();
double GetExposureTime();
+
void SetExposureTime(double microseconds);
+
double GetGain();
+
void SetGain(double value);
+
int GetWidth();
+
void SetWidth(int value);
+
int GetHeight();
+
void SetHeight(int value);
+
string GetPixelFormat();
+
void SetPixelFormat(string format);
event EventHandler ImageGrabbed;
+
event EventHandler GrabError;
+
event EventHandler ConnectionLost;
}
@@ -50,4 +61,4 @@ public interface ICameraFactory
{
/// 根据相机品牌创建控制器实例。
ICameraController CreateController(string cameraType);
-}
+}
\ No newline at end of file
diff --git a/XP.Camera/PixelConverter.cs b/XP.Camera/PixelConverter.cs
index e134f91..2c965b5 100644
--- a/XP.Camera/PixelConverter.cs
+++ b/XP.Camera/PixelConverter.cs
@@ -31,4 +31,4 @@ public static class PixelConverter
bitmap.Freeze();
return bitmap;
}
-}
+}
\ No newline at end of file
diff --git a/ImageProcessing.Processors/LocalizationHelper.cs b/XP.ImageProcessing.CfgControl/LocalizationHelper.cs
similarity index 82%
rename from ImageProcessing.Processors/LocalizationHelper.cs
rename to XP.ImageProcessing.CfgControl/LocalizationHelper.cs
index 67d6158..cf654c0 100644
--- a/ImageProcessing.Processors/LocalizationHelper.cs
+++ b/XP.ImageProcessing.CfgControl/LocalizationHelper.cs
@@ -1,18 +1,18 @@
using System.Globalization;
using System.Resources;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.CfgControl;
///
/// 本地化辅助类,用于管理多语言资源
-/// 与 ImageProcessing 主项目的语言设置同步
+/// �?ImageProcessing 主项目的语言设置同步
///
public static class LocalizationHelper
{
private static ResourceManager? _resourceManager;
///
- /// 资源管理器
+ /// 资源管理�?
///
private static ResourceManager ResourceManager
{
@@ -21,7 +21,7 @@ public static class LocalizationHelper
if (_resourceManager == null)
{
_resourceManager = new ResourceManager(
- "ImageProcessing.Processors.Resources.Resources",
+ "XP.ImageProcessing.CfgControl.Resources.Resources",
typeof(LocalizationHelper).Assembly);
}
return _resourceManager;
@@ -32,7 +32,7 @@ public static class LocalizationHelper
/// 获取本地化字符串
/// 使用当前 UI 文化(与主项目同步)
///
- /// 资源键
+ /// 资源�?/param>
/// 本地化字符串
public static string GetString(string key)
{
diff --git a/ImageProcessing.Controls/ProcessorParameterControl.xaml b/XP.ImageProcessing.CfgControl/ProcessorParameterControl.xaml
similarity index 94%
rename from ImageProcessing.Controls/ProcessorParameterControl.xaml
rename to XP.ImageProcessing.CfgControl/ProcessorParameterControl.xaml
index bfaa227..aedfcc7 100644
--- a/ImageProcessing.Controls/ProcessorParameterControl.xaml
+++ b/XP.ImageProcessing.CfgControl/ProcessorParameterControl.xaml
@@ -1,4 +1,4 @@
-
/// 通用参数配置 UserControl
@@ -24,7 +24,7 @@ public partial class ProcessorParameterControl : UserControl
}
///
- /// 更新"未选择算子"的文本
+ /// 更新"未选择算子"的文�?
///
private void UpdateNoProcessorText()
{
@@ -41,7 +41,7 @@ public partial class ProcessorParameterControl : UserControl
}
///
- /// 加载算子参数并生成 UI
+ /// 加载算子参数并生�?UI
///
public void LoadProcessor(ImageProcessorBase? processor)
{
@@ -68,7 +68,7 @@ public partial class ProcessorParameterControl : UserControl
}
///
- /// 根据参数类型创建对应的控件
+ /// 根据参数类型创建对应的控�?
///
private void CreateParameterControl(ProcessorParameter param)
{
@@ -88,7 +88,7 @@ public partial class ProcessorParameterControl : UserControl
};
pnlParameters.Children.Add(label);
- // 根据参数类型创建不同的控件
+ // 根据参数类型创建不同的控�?
UIElement? control = null;
if (param.ValueType == typeof(int))
@@ -133,8 +133,8 @@ public partial class ProcessorParameterControl : UserControl
}
///
- /// 创建整数类型控件(Slider + TextBox 或仅 TextBox)
- /// 当 MinValue 和 MaxValue 都为 null 时,只显示文本框,不显示滑块
+ /// 创建整数类型控件(Slider + TextBox 或仅 TextBox�?
+ /// �?MinValue �?MaxValue 都为 null 时,只显示文本框,不显示滑块
///
private UIElement CreateIntegerControl(ProcessorParameter param)
{
@@ -201,8 +201,8 @@ public partial class ProcessorParameterControl : UserControl
}
///
- /// 创建浮点数类型控件(Slider + TextBox 或仅 TextBox)
- /// 当 MinValue 和 MaxValue 都为 null 时,只显示文本框,不显示滑块
+ /// 创建浮点数类型控件(Slider + TextBox 或仅 TextBox�?
+ /// �?MinValue �?MaxValue 都为 null 时,只显示文本框,不显示滑块
///
private UIElement CreateDoubleControl(ProcessorParameter param)
{
@@ -268,7 +268,7 @@ public partial class ProcessorParameterControl : UserControl
}
///
- /// 创建布尔类型控件(CheckBox)
+ /// 创建布尔类型控件(CheckBox�?
///
private UIElement CreateBooleanControl(ProcessorParameter param)
{
@@ -295,7 +295,7 @@ public partial class ProcessorParameterControl : UserControl
}
///
- /// 创建下拉框控件(ComboBox)
+ /// 创建下拉框控件(ComboBox�?
///
private UIElement CreateComboBoxControl(ProcessorParameter param)
{
@@ -322,7 +322,7 @@ public partial class ProcessorParameterControl : UserControl
{
_currentProcessor?.SetParameter(param.Name, comboBox.SelectedItem.ToString()!);
- // 如果是 FilterType 参数,重新加载界面以更新参数可见性
+ // 如果�?FilterType 参数,重新加载界面以更新参数可见�?
if (param.Name == "FilterType")
{
LoadProcessor(_currentProcessor);
@@ -336,7 +336,7 @@ public partial class ProcessorParameterControl : UserControl
}
///
- /// 创建文本框控件(TextBox)
+ /// 创建文本框控件(TextBox�?
///
private UIElement CreateTextBoxControl(ProcessorParameter param)
{
@@ -358,7 +358,7 @@ public partial class ProcessorParameterControl : UserControl
}
///
- /// 获取当前配置的算子
+ /// 获取当前配置的算�?
///
public ImageProcessorBase? GetProcessor()
{
diff --git a/ImageProcessing.Controls/Resources/Resources.resx b/XP.ImageProcessing.CfgControl/Resources/Resources.resx
similarity index 100%
rename from ImageProcessing.Controls/Resources/Resources.resx
rename to XP.ImageProcessing.CfgControl/Resources/Resources.resx
diff --git a/ImageProcessing.Controls/Resources/Resources.zh-CN.resx b/XP.ImageProcessing.CfgControl/Resources/Resources.zh-CN.resx
similarity index 100%
rename from ImageProcessing.Controls/Resources/Resources.zh-CN.resx
rename to XP.ImageProcessing.CfgControl/Resources/Resources.zh-CN.resx
diff --git a/ImageProcessing.Controls/ImageProcessing.Controls.csproj b/XP.ImageProcessing.CfgControl/XP.ImageProcessing.CfgControl.csproj
similarity index 78%
rename from ImageProcessing.Controls/ImageProcessing.Controls.csproj
rename to XP.ImageProcessing.CfgControl/XP.ImageProcessing.CfgControl.csproj
index e65e58e..3f5417f 100644
--- a/ImageProcessing.Controls/ImageProcessing.Controls.csproj
+++ b/XP.ImageProcessing.CfgControl/XP.ImageProcessing.CfgControl.csproj
@@ -5,6 +5,8 @@
enable
enable
true
+ XP.ImageProcessing.CfgControl
+ XP.ImageProcessing.CfgControl
@@ -23,7 +25,7 @@
-
+
diff --git a/ImageProcessing.Core/ImageProcessorBase.cs b/XP.ImageProcessing.Core/ImageProcessorBase.cs
similarity index 86%
rename from ImageProcessing.Core/ImageProcessorBase.cs
rename to XP.ImageProcessing.Core/ImageProcessorBase.cs
index 2644079..e4293ad 100644
--- a/ImageProcessing.Core/ImageProcessorBase.cs
+++ b/XP.ImageProcessing.Core/ImageProcessorBase.cs
@@ -1,22 +1,22 @@
-// ============================================================================
+// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: ImageProcessorBase.cs
-// 描述: 8位图像处理算子基类,定义图像处理算子的通用接口和行为
+// 文件�? ImageProcessorBase.cs
+// 描述: 8位图像处理算子基类,定义图像处理算子的通用接口和行�?
// 功能:
// - 定义算子的基本属性(名称、描述)
// - 参数管理(设置、获取、验证)
-// - ROI(感兴趣区域)处理支持
+// - ROI(感兴趣区域)处理支�?
// - 输出数据管理(用于传递额外信息如轮廓等)
-// - 为所有8位图像处理算子提供统一的基础框架
+// - 为所�?位图像处理算子提供统一的基础框架
// 设计模式: 模板方法模式
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作�? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.CV.Util;
-namespace ImageProcessing.Core;
+namespace XP.ImageProcessing.Core;
///
/// 图像处理算子基类
@@ -49,7 +49,7 @@ public abstract class ImageProcessorBase
}
///
- /// 初始化算子参数(子类实现)
+ /// 初始化算子参数(子类实现�?
///
protected abstract void InitializeParameters();
@@ -59,7 +59,7 @@ public abstract class ImageProcessorBase
public abstract Image Process(Image inputImage);
///
- /// 执行图像处理(带矩形ROI支持)
+ /// 执行图像处理(带矩形ROI支持�?
///
public Image ProcessWithROI(Image inputImage)
{
@@ -71,7 +71,7 @@ public abstract class ImageProcessorBase
var processedROI = Process(roiImage);
- // 将 ROI 偏移量保存到输出数据中,供轮廓绘制等使用
+ // �?ROI 偏移量保存到输出数据中,供轮廓绘制等使用
OutputData["ROIOffset"] = new System.Drawing.Point(ROI.Value.X, ROI.Value.Y);
var result = inputImage.Clone();
@@ -87,7 +87,7 @@ public abstract class ImageProcessorBase
}
///
- /// 执行图像处理(带多边形ROI掩码支持)
+ /// 执行图像处理(带多边形ROI掩码支持�?
///
public Image ProcessWithPolygonROI(Image inputImage)
{
@@ -100,7 +100,7 @@ public abstract class ImageProcessorBase
var mask = new Image(inputImage.Width, inputImage.Height);
mask.SetValue(new Gray(0));
- // 绘制多边形掩码(白色表示ROI区域)
+ // 绘制多边形掩码(白色表示ROI区域�?
using (var vop = new VectorOfPoint(PolygonROIPoints))
{
using (var vvop = new VectorOfVectorOfPoint(vop))
@@ -115,12 +115,12 @@ public abstract class ImageProcessorBase
// 创建结果图像
var result = inputImage.Clone();
- // 使用掩码:ROI内使用处理后的像素,ROI外保持原始像素
+ // 使用掩码:ROI内使用处理后的像素,ROI外保持原始像�?
for (int y = 0; y < inputImage.Height; y++)
{
for (int x = 0; x < inputImage.Width; x++)
{
- if (mask.Data[y, x, 0] > 0) // 在ROI内
+ if (mask.Data[y, x, 0] > 0) // 在ROI�?
{
result.Data[y, x, 0] = processedImage.Data[y, x, 0];
}
@@ -137,7 +137,7 @@ public abstract class ImageProcessorBase
}
///
- /// 获取所有参数列表
+ /// 获取所有参数列�?
///
public List GetParameters()
{
@@ -145,7 +145,7 @@ public abstract class ImageProcessorBase
}
///
- /// 设置参数值
+ /// 设置参数�?
///
public void SetParameter(string name, object value)
{
diff --git a/ImageProcessing.Core/ProcessorParameter.cs b/XP.ImageProcessing.Core/ProcessorParameter.cs
similarity index 86%
rename from ImageProcessing.Core/ProcessorParameter.cs
rename to XP.ImageProcessing.Core/ProcessorParameter.cs
index 670281d..28f172c 100644
--- a/ImageProcessing.Core/ProcessorParameter.cs
+++ b/XP.ImageProcessing.Core/ProcessorParameter.cs
@@ -1,24 +1,24 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: ProcessorParameter.cs
+// 文件? ProcessorParameter.cs
// 描述: 图像处理算子参数定义类,用于描述算子的可配置参数
// 功能:
// - 定义参数的基本属性(名称、类型、默认值)
// - 支持参数范围约束(最小值、最大值)
-// - 支持枚举类型参数(下拉选项)
+// - 支持枚举类型参数(下拉选项?
// - 提供参数描述信息用于UI显示
-// - 统一的参数管理机制
-// 作者: 李伟 wei.lw.li@hexagon.com
+// - 统一的参数管理机?
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
-namespace ImageProcessing.Core;
+namespace XP.ImageProcessing.Core;
///
/// 图像处理算子参数定义
///
public class ProcessorParameter
{
- /// 参数名称(代码中使用)
+ /// 参数名称(代码中使用?/summary>
public string Name { get; set; }
/// 显示名称(UI中显示)
@@ -27,7 +27,7 @@ public class ProcessorParameter
/// 参数类型
public Type ValueType { get; set; }
- /// 当前值
+ /// 当前?/summary>
public object Value { get; set; }
/// 最小值(可选)
diff --git a/ImageProcessing.Core/ImageProcessing.Core.csproj b/XP.ImageProcessing.Core/XP.ImageProcessing.Core.csproj
similarity index 77%
rename from ImageProcessing.Core/ImageProcessing.Core.csproj
rename to XP.ImageProcessing.Core/XP.ImageProcessing.Core.csproj
index 1ffa374..4f794e9 100644
--- a/ImageProcessing.Core/ImageProcessing.Core.csproj
+++ b/XP.ImageProcessing.Core/XP.ImageProcessing.Core.csproj
@@ -4,6 +4,8 @@
net8.0-windows
enable
enable
+ XP.ImageProcessing.Core
+ XP.ImageProcessing.Core
diff --git a/ImageProcessing.Controls/LocalizationHelper.cs b/XP.ImageProcessing.Processors/LocalizationHelper.cs
similarity index 82%
rename from ImageProcessing.Controls/LocalizationHelper.cs
rename to XP.ImageProcessing.Processors/LocalizationHelper.cs
index af59030..b1b781c 100644
--- a/ImageProcessing.Controls/LocalizationHelper.cs
+++ b/XP.ImageProcessing.Processors/LocalizationHelper.cs
@@ -1,18 +1,18 @@
using System.Globalization;
using System.Resources;
-namespace ImageProcessing.Controls;
+namespace XP.ImageProcessing.Processors;
///
/// 本地化辅助类,用于管理多语言资源
-/// 与 ImageProcessing 主项目的语言设置同步
+/// ?ImageProcessing 主项目的语言设置同步
///
public static class LocalizationHelper
{
private static ResourceManager? _resourceManager;
///
- /// 资源管理器
+ /// 资源管理?
///
private static ResourceManager ResourceManager
{
@@ -21,7 +21,7 @@ public static class LocalizationHelper
if (_resourceManager == null)
{
_resourceManager = new ResourceManager(
- "ImageProcessing.Controls.Resources.Resources",
+ "XP.ImageProcessing.Processors.Resources.Resources",
typeof(LocalizationHelper).Assembly);
}
return _resourceManager;
@@ -32,7 +32,7 @@ public static class LocalizationHelper
/// 获取本地化字符串
/// 使用当前 UI 文化(与主项目同步)
///
- /// 资源键
+ /// 资源?/param>
/// 本地化字符串
public static string GetString(string key)
{
diff --git a/ImageProcessing.Processors/Resources/Resources.Designer.cs b/XP.ImageProcessing.Processors/Resources/Resources.Designer.cs
similarity index 75%
rename from ImageProcessing.Processors/Resources/Resources.Designer.cs
rename to XP.ImageProcessing.Processors/Resources/Resources.Designer.cs
index 79d8d5a..d105dda 100644
--- a/ImageProcessing.Processors/Resources/Resources.Designer.cs
+++ b/XP.ImageProcessing.Processors/Resources/Resources.Designer.cs
@@ -1,24 +1,24 @@
-//------------------------------------------------------------------------------
+//------------------------------------------------------------------------------
//
-// 此代码由工具生成。
-// 运行时版本:4.0.30319.42000
+// ˴ɹɡ
+// ʱ汾:4.0.30319.42000
//
-// 对此文件的更改可能会导致不正确的行为,并且如果
-// 重新生成代码,这些更改将会丢失。
+// ԴļĸĿܻᵼ²ȷΪ
+// ɴ룬ЩĽᶪʧ
//
//------------------------------------------------------------------------------
-namespace ImageProcessing.Processors.Resources {
+namespace XP.ImageProcessing.Processors.Resources {
using System;
///
- /// 一个强类型的资源类,用于查找本地化的字符串等。
+ /// һǿ͵Դ࣬ڲұػַȡ
///
- // 此类是由 StronglyTypedResourceBuilder
- // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
- // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
- // (以 /str 作为命令选项),或重新生成 VS 项目。
+ // StronglyTypedResourceBuilder
+ // ͨ ResGen Visual Studio ĹԶɵġ
+ // ҪӻƳԱ༭ .ResX ļȻ ResGen
+ // ( /str Ϊѡ) VS Ŀ
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
@@ -33,13 +33,13 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 返回此类使用的缓存的 ResourceManager 实例。
+ /// شʹõĻ ResourceManager ʵ
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ImageProcessing.Processors.Resources.Resources", typeof(Resources).Assembly);
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("XP.ImageProcessing.Processors.Resources.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
@@ -47,8 +47,8 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 重写当前线程的 CurrentUICulture 属性,对
- /// 使用此强类型资源类的所有资源查找执行重写。
+ /// дǰ̵߳ CurrentUICulture ԣ
+ /// ʹôǿԴԴִд
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture {
@@ -61,7 +61,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Preserve image information within specified frequency range 的本地化字符串。
+ /// Preserve image information within specified frequency range ıػַ
///
public static string BandPassFilterProcessor_Description {
get {
@@ -70,7 +70,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Filter Type 的本地化字符串。
+ /// Filter Type ıػַ
///
public static string BandPassFilterProcessor_FilterType {
get {
@@ -79,7 +79,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Transition characteristics of the filter 的本地化字符串。
+ /// Transition characteristics of the filter ıػַ
///
public static string BandPassFilterProcessor_FilterType_Desc {
get {
@@ -88,7 +88,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 High Cutoff Radius 的本地化字符串。
+ /// High Cutoff Radius ıػַ
///
public static string BandPassFilterProcessor_HighCutoff {
get {
@@ -97,7 +97,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Components above this frequency will be removed 的本地化字符串。
+ /// Components above this frequency will be removed ıػַ
///
public static string BandPassFilterProcessor_HighCutoff_Desc {
get {
@@ -106,7 +106,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Low Cutoff Radius 的本地化字符串。
+ /// Low Cutoff Radius ıػַ
///
public static string BandPassFilterProcessor_LowCutoff {
get {
@@ -115,7 +115,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Components below this frequency will be removed 的本地化字符串。
+ /// Components below this frequency will be removed ıػַ
///
public static string BandPassFilterProcessor_LowCutoff_Desc {
get {
@@ -124,7 +124,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Band Pass Filter 的本地化字符串。
+ /// Band Pass Filter ıػַ
///
public static string BandPassFilterProcessor_Name {
get {
@@ -133,7 +133,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Butterworth Order 的本地化字符串。
+ /// Butterworth Order ıػַ
///
public static string BandPassFilterProcessor_Order {
get {
@@ -142,7 +142,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Order of Butterworth filter 的本地化字符串。
+ /// Order of Butterworth filter ıػַ
///
public static string BandPassFilterProcessor_Order_Desc {
get {
@@ -151,7 +151,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Edge-preserving smoothing filter 的本地化字符串。
+ /// Edge-preserving smoothing filter ıػַ
///
public static string BilateralFilterProcessor_Description {
get {
@@ -160,7 +160,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Diameter 的本地化字符串。
+ /// Diameter ıػַ
///
public static string BilateralFilterProcessor_Diameter {
get {
@@ -169,7 +169,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Diameter of each pixel neighborhood 的本地化字符串。
+ /// Diameter of each pixel neighborhood ıػַ
///
public static string BilateralFilterProcessor_Diameter_Desc {
get {
@@ -178,7 +178,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Bilateral Filter 的本地化字符串。
+ /// Bilateral Filter ıػַ
///
public static string BilateralFilterProcessor_Name {
get {
@@ -187,7 +187,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Sigma Color 的本地化字符串。
+ /// Sigma Color ıػַ
///
public static string BilateralFilterProcessor_SigmaColor {
get {
@@ -196,7 +196,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Filter sigma in the color space 的本地化字符串。
+ /// Filter sigma in the color space ıػַ
///
public static string BilateralFilterProcessor_SigmaColor_Desc {
get {
@@ -205,7 +205,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Sigma Space 的本地化字符串。
+ /// Sigma Space ıػַ
///
public static string BilateralFilterProcessor_SigmaSpace {
get {
@@ -214,7 +214,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Filter sigma in the coordinate space 的本地化字符串。
+ /// Filter sigma in the coordinate space ıػַ
///
public static string BilateralFilterProcessor_SigmaSpace_Desc {
get {
@@ -223,7 +223,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Detect contours in image and output contour information 的本地化字符串。
+ /// Detect contours in image and output contour information ıػַ
///
public static string ContourProcessor_Description {
get {
@@ -232,7 +232,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Max Area 的本地化字符串。
+ /// Max Area ıػַ
///
public static string ContourProcessor_MaxArea {
get {
@@ -241,7 +241,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Filter contours larger than this area 的本地化字符串。
+ /// Filter contours larger than this area ıػַ
///
public static string ContourProcessor_MaxArea_Desc {
get {
@@ -250,7 +250,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Min Area 的本地化字符串。
+ /// Min Area ıػַ
///
public static string ContourProcessor_MinArea {
get {
@@ -259,7 +259,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Filter contours smaller than this area 的本地化字符串。
+ /// Filter contours smaller than this area ıػַ
///
public static string ContourProcessor_MinArea_Desc {
get {
@@ -268,7 +268,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Contour Detection 的本地化字符串。
+ /// Contour Detection ıػַ
///
public static string ContourProcessor_Name {
get {
@@ -277,7 +277,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Target Color 的本地化字符串。
+ /// Target Color ıػַ
///
public static string ContourProcessor_TargetColor {
get {
@@ -286,7 +286,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Select the color of regions to find (white or black) 的本地化字符串。
+ /// Select the color of regions to find (white or black) ıػַ
///
public static string ContourProcessor_TargetColor_Desc {
get {
@@ -295,7 +295,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Line Thickness 的本地化字符串。
+ /// Line Thickness ıػַ
///
public static string ContourProcessor_Thickness {
get {
@@ -304,7 +304,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Thickness of contour lines 的本地化字符串。
+ /// Thickness of contour lines ıػַ
///
public static string ContourProcessor_Thickness_Desc {
get {
@@ -313,7 +313,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Threshold Value 的本地化字符串。
+ /// Threshold Value ıػַ
///
public static string ContourProcessor_ThresholdValue {
get {
@@ -322,7 +322,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Threshold value for binarization (0-255) 的本地化字符串。
+ /// Threshold value for binarization (0-255) ıػַ
///
public static string ContourProcessor_ThresholdValue_Desc {
get {
@@ -331,7 +331,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Use Otsu Auto Threshold 的本地化字符串。
+ /// Use Otsu Auto Threshold ıػַ
///
public static string ContourProcessor_UseOtsu {
get {
@@ -340,7 +340,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Automatically calculate optimal threshold 的本地化字符串。
+ /// Automatically calculate optimal threshold ıػַ
///
public static string ContourProcessor_UseOtsu_Desc {
get {
@@ -349,7 +349,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Enable Threshold 的本地化字符串。
+ /// Enable Threshold ıػַ
///
public static string ContourProcessor_UseThreshold {
get {
@@ -358,7 +358,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Apply binary threshold before contour detection 的本地化字符串。
+ /// Apply binary threshold before contour detection ıػַ
///
public static string ContourProcessor_UseThreshold_Desc {
get {
@@ -367,7 +367,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Auto Contrast 的本地化字符串。
+ /// Auto Contrast ıػַ
///
public static string ContrastProcessor_AutoContrast {
get {
@@ -376,7 +376,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Automatically stretch contrast to full range 的本地化字符串。
+ /// Automatically stretch contrast to full range ıػַ
///
public static string ContrastProcessor_AutoContrast_Desc {
get {
@@ -385,7 +385,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Brightness 的本地化字符串。
+ /// Brightness ıػַ
///
public static string ContrastProcessor_Brightness {
get {
@@ -394,7 +394,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Brightness offset 的本地化字符串。
+ /// Brightness offset ıػַ
///
public static string ContrastProcessor_Brightness_Desc {
get {
@@ -403,7 +403,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 CLAHE Clip Limit 的本地化字符串。
+ /// CLAHE Clip Limit ıػַ
///
public static string ContrastProcessor_ClipLimit {
get {
@@ -412,7 +412,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 CLAHE contrast limit threshold 的本地化字符串。
+ /// CLAHE contrast limit threshold ıػַ
///
public static string ContrastProcessor_ClipLimit_Desc {
get {
@@ -421,7 +421,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Contrast 的本地化字符串。
+ /// Contrast ıػַ
///
public static string ContrastProcessor_Contrast {
get {
@@ -430,7 +430,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Contrast gain, 1.0 for original contrast 的本地化字符串。
+ /// Contrast gain, 1.0 for original contrast ıػַ
///
public static string ContrastProcessor_Contrast_Desc {
get {
@@ -439,7 +439,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Adjust image contrast and brightness 的本地化字符串。
+ /// Adjust image contrast and brightness ıػַ
///
public static string ContrastProcessor_Description {
get {
@@ -448,7 +448,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Contrast Adjustment 的本地化字符串。
+ /// Contrast Adjustment ıػַ
///
public static string ContrastProcessor_Name {
get {
@@ -457,7 +457,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Use CLAHE 的本地化字符串。
+ /// Use CLAHE ıػַ
///
public static string ContrastProcessor_UseCLAHE {
get {
@@ -466,7 +466,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Use Contrast Limited Adaptive Histogram Equalization 的本地化字符串。
+ /// Use Contrast Limited Adaptive Histogram Equalization ıػַ
///
public static string ContrastProcessor_UseCLAHE_Desc {
get {
@@ -475,7 +475,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Perform division operation on image for background correction and normalization 的本地化字符串。
+ /// Perform division operation on image for background correction and normalization ıػַ
///
public static string DivisionProcessor_Description {
get {
@@ -484,7 +484,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Divisor 的本地化字符串。
+ /// Divisor ıػַ
///
public static string DivisionProcessor_Divisor {
get {
@@ -493,7 +493,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Each pixel value will be divided by this number 的本地化字符串。
+ /// Each pixel value will be divided by this number ıػַ
///
public static string DivisionProcessor_Divisor_Desc {
get {
@@ -502,7 +502,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Division Operation 的本地化字符串。
+ /// Division Operation ıػַ
///
public static string DivisionProcessor_Name {
get {
@@ -511,7 +511,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Normalize Output 的本地化字符串。
+ /// Normalize Output ıػַ
///
public static string DivisionProcessor_Normalize {
get {
@@ -520,7 +520,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Normalize result to 0-255 range 的本地化字符串。
+ /// Normalize result to 0-255 range ıػַ
///
public static string DivisionProcessor_Normalize_Desc {
get {
@@ -529,7 +529,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Scale Factor 的本地化字符串。
+ /// Scale Factor ıػַ
///
public static string DivisionProcessor_Scale {
get {
@@ -538,7 +538,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Division result multiplied by this scale factor 的本地化字符串。
+ /// Division result multiplied by this scale factor ıػַ
///
public static string DivisionProcessor_Scale_Desc {
get {
@@ -547,7 +547,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Preserve image information within specified frequency range 的本地化字符串。
+ /// Preserve image information within specified frequency range ıػַ
///
public static string FilterProcessor_BandPass_Desc {
get {
@@ -556,7 +556,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Band Pass Filter 的本地化字符串。
+ /// Band Pass Filter ıػַ
///
public static string FilterProcessor_BandPass_Name {
get {
@@ -565,7 +565,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Band Pass Filter Type 的本地化字符串。
+ /// Band Pass Filter Type ıػַ
///
public static string FilterProcessor_BandPassFilterType {
get {
@@ -574,7 +574,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Transition characteristics of the band pass filter 的本地化字符串。
+ /// Transition characteristics of the band pass filter ıػַ
///
public static string FilterProcessor_BandPassFilterType_Desc {
get {
@@ -583,7 +583,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Edge-preserving smoothing filter 的本地化字符串。
+ /// Edge-preserving smoothing filter ıػַ
///
public static string FilterProcessor_Bilateral_Desc {
get {
@@ -592,7 +592,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Bilateral Filter 的本地化字符串。
+ /// Bilateral Filter ıػַ
///
public static string FilterProcessor_Bilateral_Name {
get {
@@ -601,7 +601,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Cutoff Frequency 的本地化字符串。
+ /// Cutoff Frequency ıػַ
///
public static string FilterProcessor_D0 {
get {
@@ -610,7 +610,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Cutoff frequency for frequency domain filtering 的本地化字符串。
+ /// Cutoff frequency for frequency domain filtering ıػַ
///
public static string FilterProcessor_D0_Desc {
get {
@@ -619,7 +619,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Integrated multiple filtering methods 的本地化字符串。
+ /// Integrated multiple filtering methods ıػַ
///
public static string FilterProcessor_Description {
get {
@@ -628,7 +628,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Filter Type 的本地化字符串。
+ /// Filter Type ıػַ
///
public static string FilterProcessor_FilterType {
get {
@@ -637,7 +637,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Select filtering method 的本地化字符串。
+ /// Select filtering method ıػַ
///
public static string FilterProcessor_FilterType_Desc {
get {
@@ -646,7 +646,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Smooth image and reduce Gaussian noise while preserving edges 的本地化字符串。
+ /// Smooth image and reduce Gaussian noise while preserving edges ıػַ
///
public static string FilterProcessor_Gaussian_Desc {
get {
@@ -655,7 +655,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Gaussian Filter 的本地化字符串。
+ /// Gaussian Filter ıػַ
///
public static string FilterProcessor_Gaussian_Name {
get {
@@ -664,7 +664,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 High Cutoff Radius 的本地化字符串。
+ /// High Cutoff Radius ıػַ
///
public static string FilterProcessor_HighCutoff {
get {
@@ -673,7 +673,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Components above this frequency will be removed 的本地化字符串。
+ /// Components above this frequency will be removed ıػַ
///
public static string FilterProcessor_HighCutoff_Desc {
get {
@@ -682,7 +682,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Edge enhancement in frequency domain 的本地化字符串。
+ /// Edge enhancement in frequency domain ıػַ
///
public static string FilterProcessor_HighPass_Desc {
get {
@@ -691,7 +691,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 High Pass Filter 的本地化字符串。
+ /// High Pass Filter ıػַ
///
public static string FilterProcessor_HighPass_Name {
get {
@@ -700,7 +700,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Kernel Size 的本地化字符串。
+ /// Kernel Size ıػַ
///
public static string FilterProcessor_KernelSize {
get {
@@ -709,7 +709,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Size of the filter kernel (must be odd) 的本地化字符串。
+ /// Size of the filter kernel (must be odd) ıػַ
///
public static string FilterProcessor_KernelSize_Desc {
get {
@@ -718,7 +718,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Low Cutoff Radius 的本地化字符串。
+ /// Low Cutoff Radius ıػַ
///
public static string FilterProcessor_LowCutoff {
get {
@@ -727,7 +727,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Components below this frequency will be removed 的本地化字符串。
+ /// Components below this frequency will be removed ıػַ
///
public static string FilterProcessor_LowCutoff_Desc {
get {
@@ -736,7 +736,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Remove high frequency noise in frequency domain 的本地化字符串。
+ /// Remove high frequency noise in frequency domain ıػַ
///
public static string FilterProcessor_LowPass_Desc {
get {
@@ -745,7 +745,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Low Pass Filter 的本地化字符串。
+ /// Low Pass Filter ıػַ
///
public static string FilterProcessor_LowPass_Name {
get {
@@ -754,7 +754,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Simple averaging smoothing filter 的本地化字符串。
+ /// Simple averaging smoothing filter ıػַ
///
public static string FilterProcessor_Mean_Desc {
get {
@@ -763,7 +763,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Mean Filter 的本地化字符串。
+ /// Mean Filter ıػַ
///
public static string FilterProcessor_Mean_Name {
get {
@@ -772,7 +772,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Remove salt-and-pepper noise effectively 的本地化字符串。
+ /// Remove salt-and-pepper noise effectively ıػַ
///
public static string FilterProcessor_Median_Desc {
get {
@@ -781,7 +781,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Median Filter 的本地化字符串。
+ /// Median Filter ıػַ
///
public static string FilterProcessor_Median_Name {
get {
@@ -790,7 +790,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Comprehensive Filter 的本地化字符串。
+ /// Comprehensive Filter ıػַ
///
public static string FilterProcessor_Name {
get {
@@ -799,7 +799,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Butterworth Order 的本地化字符串。
+ /// Butterworth Order ıػַ
///
public static string FilterProcessor_Order {
get {
@@ -808,7 +808,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Order of Butterworth filter 的本地化字符串。
+ /// Order of Butterworth filter ıػַ
///
public static string FilterProcessor_Order_Desc {
get {
@@ -817,7 +817,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Sigma 的本地化字符串。
+ /// Sigma ıػַ
///
public static string FilterProcessor_Sigma {
get {
@@ -826,7 +826,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Standard deviation for Gaussian/Bilateral filter 的本地化字符串。
+ /// Standard deviation for Gaussian/Bilateral filter ıػַ
///
public static string FilterProcessor_Sigma_Desc {
get {
@@ -835,7 +835,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Adjust image brightness through Gamma value 的本地化字符串。
+ /// Adjust image brightness through Gamma value ıػַ
///
public static string GammaProcessor_Description {
get {
@@ -844,7 +844,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Gain 的本地化字符串。
+ /// Gain ıػַ
///
public static string GammaProcessor_Gain {
get {
@@ -853,7 +853,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Output gain coefficient 的本地化字符串。
+ /// Output gain coefficient ıػַ
///
public static string GammaProcessor_Gain_Desc {
get {
@@ -862,7 +862,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Gamma Value 的本地化字符串。
+ /// Gamma Value ıػַ
///
public static string GammaProcessor_Gamma {
get {
@@ -871,7 +871,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Gamma value, less than 1 darkens image, greater than 1 brightens image 的本地化字符串。
+ /// Gamma value, less than 1 darkens image, greater than 1 brightens image ıػַ
///
public static string GammaProcessor_Gamma_Desc {
get {
@@ -880,7 +880,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Gamma Correction 的本地化字符串。
+ /// Gamma Correction ıػַ
///
public static string GammaProcessor_Name {
get {
@@ -889,7 +889,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Smooth image using Gaussian kernel 的本地化字符串。
+ /// Smooth image using Gaussian kernel ıػַ
///
public static string GaussianBlurProcessor_Description {
get {
@@ -898,7 +898,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Kernel Size 的本地化字符串。
+ /// Kernel Size ıػַ
///
public static string GaussianBlurProcessor_KernelSize {
get {
@@ -907,7 +907,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Size of Gaussian kernel, must be odd 的本地化字符串。
+ /// Size of Gaussian kernel, must be odd ıػַ
///
public static string GaussianBlurProcessor_KernelSize_Desc {
get {
@@ -916,7 +916,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Gaussian Blur 的本地化字符串。
+ /// Gaussian Blur ıػַ
///
public static string GaussianBlurProcessor_Name {
get {
@@ -925,7 +925,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Standard Deviation 的本地化字符串。
+ /// Standard Deviation ıػַ
///
public static string GaussianBlurProcessor_Sigma {
get {
@@ -934,7 +934,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Standard deviation of Gaussian kernel, controls blur amount 的本地化字符串。
+ /// Standard deviation of Gaussian kernel, controls blur amount ıػַ
///
public static string GaussianBlurProcessor_Sigma_Desc {
get {
@@ -943,7 +943,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Convert image to grayscale 的本地化字符串。
+ /// Convert image to grayscale ıػַ
///
public static string GrayscaleProcessor_Description {
get {
@@ -952,7 +952,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Conversion Method 的本地化字符串。
+ /// Conversion Method ıػַ
///
public static string GrayscaleProcessor_Method {
get {
@@ -961,7 +961,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Method for grayscale conversion 的本地化字符串。
+ /// Method for grayscale conversion ıػַ
///
public static string GrayscaleProcessor_Method_Desc {
get {
@@ -970,7 +970,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Grayscale Conversion 的本地化字符串。
+ /// Grayscale Conversion ıػַ
///
public static string GrayscaleProcessor_Name {
get {
@@ -979,7 +979,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Bias 的本地化字符串。
+ /// Bias ıػַ
///
public static string HDREnhancementProcessor_Bias {
get {
@@ -988,7 +988,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Bias for adaptive logarithmic and Drago mapping, controls dark/bright balance 的本地化字符串。
+ /// Bias for adaptive logarithmic and Drago mapping, controls dark/bright balance ıػַ
///
public static string HDREnhancementProcessor_Bias_Desc {
get {
@@ -997,7 +997,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 High Dynamic Range image enhancement with tone mapping 的本地化字符串。
+ /// High Dynamic Range image enhancement with tone mapping ıػַ
///
public static string HDREnhancementProcessor_Description {
get {
@@ -1006,7 +1006,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Detail Boost 的本地化字符串。
+ /// Detail Boost ıػַ
///
public static string HDREnhancementProcessor_DetailBoost {
get {
@@ -1015,7 +1015,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Detail enhancement factor, higher values reveal more fine details 的本地化字符串。
+ /// Detail enhancement factor, higher values reveal more fine details ıػַ
///
public static string HDREnhancementProcessor_DetailBoost_Desc {
get {
@@ -1024,7 +1024,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Gamma 的本地化字符串。
+ /// Gamma ıػַ
///
public static string HDREnhancementProcessor_Gamma {
get {
@@ -1033,7 +1033,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Gamma correction value for output brightness adjustment 的本地化字符串。
+ /// Gamma correction value for output brightness adjustment ıػַ
///
public static string HDREnhancementProcessor_Gamma_Desc {
get {
@@ -1042,7 +1042,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Tone Mapping Method 的本地化字符串。
+ /// Tone Mapping Method ıػַ
///
public static string HDREnhancementProcessor_Method {
get {
@@ -1051,7 +1051,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Select HDR tone mapping algorithm: LocalToneMap, AdaptiveLog, Drago, BilateralToneMap 的本地化字符串。
+ /// Select HDR tone mapping algorithm: LocalToneMap, AdaptiveLog, Drago, BilateralToneMap ıػַ
///
public static string HDREnhancementProcessor_Method_Desc {
get {
@@ -1060,7 +1060,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 HDR Enhancement 的本地化字符串。
+ /// HDR Enhancement ıػַ
///
public static string HDREnhancementProcessor_Name {
get {
@@ -1069,7 +1069,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Saturation 的本地化字符串。
+ /// Saturation ıػַ
///
public static string HDREnhancementProcessor_Saturation {
get {
@@ -1078,7 +1078,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Contrast saturation factor for LocalToneMap method 的本地化字符串。
+ /// Contrast saturation factor for LocalToneMap method ıػַ
///
public static string HDREnhancementProcessor_Saturation_Desc {
get {
@@ -1087,7 +1087,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Sigma Color 的本地化字符串。
+ /// Sigma Color ıػַ
///
public static string HDREnhancementProcessor_SigmaColor {
get {
@@ -1096,7 +1096,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Color sigma for bilateral tone mapping, controls edge preservation 的本地化字符串。
+ /// Color sigma for bilateral tone mapping, controls edge preservation ıػַ
///
public static string HDREnhancementProcessor_SigmaColor_Desc {
get {
@@ -1105,7 +1105,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Sigma Space 的本地化字符串。
+ /// Sigma Space ıػַ
///
public static string HDREnhancementProcessor_SigmaSpace {
get {
@@ -1114,7 +1114,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Spatial sigma for base layer extraction, controls smoothing range 的本地化字符串。
+ /// Spatial sigma for base layer extraction, controls smoothing range ıػַ
///
public static string HDREnhancementProcessor_SigmaSpace_Desc {
get {
@@ -1123,7 +1123,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Cutoff Frequency 的本地化字符串。
+ /// Cutoff Frequency ıػַ
///
public static string HighPassFilterProcessor_CutoffFrequency {
get {
@@ -1132,7 +1132,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Cutoff frequency for high pass filter 的本地化字符串。
+ /// Cutoff frequency for high pass filter ıػַ
///
public static string HighPassFilterProcessor_CutoffFrequency_Desc {
get {
@@ -1141,7 +1141,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Edge enhancement in frequency domain 的本地化字符串。
+ /// Edge enhancement in frequency domain ıػַ
///
public static string HighPassFilterProcessor_Description {
get {
@@ -1150,7 +1150,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 High Pass Filter 的本地化字符串。
+ /// High Pass Filter ıػַ
///
public static string HighPassFilterProcessor_Name {
get {
@@ -1159,7 +1159,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Clip Limit 的本地化字符串。
+ /// Clip Limit ıػַ
///
public static string HistogramEqualizationProcessor_ClipLimit {
get {
@@ -1168,7 +1168,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Contrast limiting threshold for CLAHE 的本地化字符串。
+ /// Contrast limiting threshold for CLAHE ıػַ
///
public static string HistogramEqualizationProcessor_ClipLimit_Desc {
get {
@@ -1177,7 +1177,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Enhance image contrast 的本地化字符串。
+ /// Enhance image contrast ıػַ
///
public static string HistogramEqualizationProcessor_Description {
get {
@@ -1186,7 +1186,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Equalization Method 的本地化字符串。
+ /// Equalization Method ıػַ
///
public static string HistogramEqualizationProcessor_Method {
get {
@@ -1195,7 +1195,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Select histogram equalization algorithm 的本地化字符串。
+ /// Select histogram equalization algorithm ıػַ
///
public static string HistogramEqualizationProcessor_Method_Desc {
get {
@@ -1204,7 +1204,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Histogram Equalization 的本地化字符串。
+ /// Histogram Equalization ıػַ
///
public static string HistogramEqualizationProcessor_Name {
get {
@@ -1213,7 +1213,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Tile Size 的本地化字符串。
+ /// Tile Size ıػַ
///
public static string HistogramEqualizationProcessor_TileSize {
get {
@@ -1222,7 +1222,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Tile size for CLAHE 的本地化字符串。
+ /// Tile size for CLAHE ıػַ
///
public static string HistogramEqualizationProcessor_TileSize_Desc {
get {
@@ -1231,7 +1231,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Detect horizontal edges specifically 的本地化字符串。
+ /// Detect horizontal edges specifically ıػַ
///
public static string HorizontalEdgeProcessor_Description {
get {
@@ -1240,7 +1240,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Detection Method 的本地化字符串。
+ /// Detection Method ıػַ
///
public static string HorizontalEdgeProcessor_Method {
get {
@@ -1249,7 +1249,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Select horizontal edge detection algorithm 的本地化字符串。
+ /// Select horizontal edge detection algorithm ıػַ
///
public static string HorizontalEdgeProcessor_Method_Desc {
get {
@@ -1258,7 +1258,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Horizontal Edge Detection 的本地化字符串。
+ /// Horizontal Edge Detection ıػַ
///
public static string HorizontalEdgeProcessor_Name {
get {
@@ -1267,7 +1267,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Sensitivity 的本地化字符串。
+ /// Sensitivity ıػַ
///
public static string HorizontalEdgeProcessor_Sensitivity {
get {
@@ -1276,7 +1276,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Edge detection sensitivity 的本地化字符串。
+ /// Edge detection sensitivity ıػַ
///
public static string HorizontalEdgeProcessor_Sensitivity_Desc {
get {
@@ -1285,7 +1285,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Threshold 的本地化字符串。
+ /// Threshold ıػַ
///
public static string HorizontalEdgeProcessor_Threshold {
get {
@@ -1294,7 +1294,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Edge detection threshold 的本地化字符串。
+ /// Edge detection threshold ıػַ
///
public static string HorizontalEdgeProcessor_Threshold_Desc {
get {
@@ -1303,7 +1303,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Detect image edges using Kirsch operator 的本地化字符串。
+ /// Detect image edges using Kirsch operator ıػַ
///
public static string KirschEdgeProcessor_Description {
get {
@@ -1312,7 +1312,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Kirsch Edge Detection 的本地化字符串。
+ /// Kirsch Edge Detection ıػַ
///
public static string KirschEdgeProcessor_Name {
get {
@@ -1321,7 +1321,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Scale Factor 的本地化字符串。
+ /// Scale Factor ıػַ
///
public static string KirschEdgeProcessor_Scale {
get {
@@ -1330,7 +1330,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Scale factor for edge intensity 的本地化字符串。
+ /// Scale factor for edge intensity ıػַ
///
public static string KirschEdgeProcessor_Scale_Desc {
get {
@@ -1339,7 +1339,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Threshold 的本地化字符串。
+ /// Threshold ıػַ
///
public static string KirschEdgeProcessor_Threshold {
get {
@@ -1348,7 +1348,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Edge detection threshold 的本地化字符串。
+ /// Edge detection threshold ıػַ
///
public static string KirschEdgeProcessor_Threshold_Desc {
get {
@@ -1357,7 +1357,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Cutoff Frequency 的本地化字符串。
+ /// Cutoff Frequency ıػַ
///
public static string LowPassFilterProcessor_CutoffFrequency {
get {
@@ -1366,7 +1366,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Cutoff frequency for low pass filter 的本地化字符串。
+ /// Cutoff frequency for low pass filter ıػַ
///
public static string LowPassFilterProcessor_CutoffFrequency_Desc {
get {
@@ -1375,7 +1375,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Remove high frequency noise in frequency domain 的本地化字符串。
+ /// Remove high frequency noise in frequency domain ıػַ
///
public static string LowPassFilterProcessor_Description {
get {
@@ -1384,7 +1384,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Low Pass Filter 的本地化字符串。
+ /// Low Pass Filter ıػַ
///
public static string LowPassFilterProcessor_Name {
get {
@@ -1393,7 +1393,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Simple averaging smoothing filter 的本地化字符串。
+ /// Simple averaging smoothing filter ıػַ
///
public static string MeanFilterProcessor_Description {
get {
@@ -1402,7 +1402,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Kernel Size 的本地化字符串。
+ /// Kernel Size ıػַ
///
public static string MeanFilterProcessor_KernelSize {
get {
@@ -1411,7 +1411,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Size of the filter kernel (must be odd) 的本地化字符串。
+ /// Size of the filter kernel (must be odd) ıػַ
///
public static string MeanFilterProcessor_KernelSize_Desc {
get {
@@ -1420,7 +1420,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Mean Filter 的本地化字符串。
+ /// Mean Filter ıػַ
///
public static string MeanFilterProcessor_Name {
get {
@@ -1429,7 +1429,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Remove salt-and-pepper noise effectively 的本地化字符串。
+ /// Remove salt-and-pepper noise effectively ıػַ
///
public static string MedianFilterProcessor_Description {
get {
@@ -1438,7 +1438,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Kernel Size 的本地化字符串。
+ /// Kernel Size ıػַ
///
public static string MedianFilterProcessor_KernelSize {
get {
@@ -1447,7 +1447,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Size of the filter kernel (must be odd) 的本地化字符串。
+ /// Size of the filter kernel (must be odd) ıػַ
///
public static string MedianFilterProcessor_KernelSize_Desc {
get {
@@ -1456,7 +1456,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Median Filter 的本地化字符串。
+ /// Median Filter ıػַ
///
public static string MedianFilterProcessor_Name {
get {
@@ -1465,7 +1465,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Flip image horizontally, vertically, or both 的本地化字符串。
+ /// Flip image horizontally, vertically, or both ıػַ
///
public static string MirrorProcessor_Description {
get {
@@ -1474,7 +1474,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Direction 的本地化字符串。
+ /// Direction ıػַ
///
public static string MirrorProcessor_Direction {
get {
@@ -1483,7 +1483,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Flip direction: Horizontal (left-right), Vertical (up-down), Both (180° rotation) 的本地化字符串。
+ /// Flip direction: Horizontal (left-right), Vertical (up-down), Both (180 rotation) ıػַ
///
public static string MirrorProcessor_Direction_Desc {
get {
@@ -1492,7 +1492,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Mirror 的本地化字符串。
+ /// Mirror ıػַ
///
public static string MirrorProcessor_Name {
get {
@@ -1501,7 +1501,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Perform morphological operations (erosion, dilation, opening, closing) 的本地化字符串。
+ /// Perform morphological operations (erosion, dilation, opening, closing) ıػַ
///
public static string MorphologyProcessor_Description {
get {
@@ -1510,7 +1510,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Iterations 的本地化字符串。
+ /// Iterations ıػַ
///
public static string MorphologyProcessor_Iterations {
get {
@@ -1519,7 +1519,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Number of times to repeat morphological operation 的本地化字符串。
+ /// Number of times to repeat morphological operation ıػַ
///
public static string MorphologyProcessor_Iterations_Desc {
get {
@@ -1528,7 +1528,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Kernel Size 的本地化字符串。
+ /// Kernel Size ıػַ
///
public static string MorphologyProcessor_KernelSize {
get {
@@ -1537,7 +1537,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Size of structuring element 的本地化字符串。
+ /// Size of structuring element ıػַ
///
public static string MorphologyProcessor_KernelSize_Desc {
get {
@@ -1546,7 +1546,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Morphology Processing 的本地化字符串。
+ /// Morphology Processing ıػַ
///
public static string MorphologyProcessor_Name {
get {
@@ -1555,7 +1555,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Operation Type 的本地化字符串。
+ /// Operation Type ıػַ
///
public static string MorphologyProcessor_Operation {
get {
@@ -1564,7 +1564,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Select morphological operation type 的本地化字符串。
+ /// Select morphological operation type ıػַ
///
public static string MorphologyProcessor_Operation_Desc {
get {
@@ -1573,7 +1573,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Color Map 的本地化字符串。
+ /// Color Map ıػַ
///
public static string PseudoColorProcessor_ColorMap {
get {
@@ -1582,7 +1582,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Select color mapping table for rendering 的本地化字符串。
+ /// Select color mapping table for rendering ıػַ
///
public static string PseudoColorProcessor_ColorMap_Desc {
get {
@@ -1591,7 +1591,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Map grayscale image to color image using color maps 的本地化字符串。
+ /// Map grayscale image to color image using color maps ıػַ
///
public static string PseudoColorProcessor_Description {
get {
@@ -1600,7 +1600,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Invert Color Map 的本地化字符串。
+ /// Invert Color Map ıػַ
///
public static string PseudoColorProcessor_InvertMap {
get {
@@ -1609,7 +1609,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Reverse the color mapping direction 的本地化字符串。
+ /// Reverse the color mapping direction ıػַ
///
public static string PseudoColorProcessor_InvertMap_Desc {
get {
@@ -1618,7 +1618,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Max Gray Value 的本地化字符串。
+ /// Max Gray Value ıػַ
///
public static string PseudoColorProcessor_MaxValue {
get {
@@ -1627,7 +1627,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Gray values above this will be clipped to maximum color 的本地化字符串。
+ /// Gray values above this will be clipped to maximum color ıػַ
///
public static string PseudoColorProcessor_MaxValue_Desc {
get {
@@ -1636,7 +1636,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Min Gray Value 的本地化字符串。
+ /// Min Gray Value ıػַ
///
public static string PseudoColorProcessor_MinValue {
get {
@@ -1645,7 +1645,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Gray values below this will be clipped to minimum color 的本地化字符串。
+ /// Gray values below this will be clipped to minimum color ıػַ
///
public static string PseudoColorProcessor_MinValue_Desc {
get {
@@ -1654,7 +1654,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Pseudo Color Rendering 的本地化字符串。
+ /// Pseudo Color Rendering ıػַ
///
public static string PseudoColorProcessor_Name {
get {
@@ -1663,7 +1663,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Multi-scale shadow correction and illumination equalization based on Retinex 的本地化字符串。
+ /// Multi-scale shadow correction and illumination equalization based on Retinex ıػַ
///
public static string RetinexProcessor_Description {
get {
@@ -1672,7 +1672,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Gain 的本地化字符串。
+ /// Gain ıػַ
///
public static string RetinexProcessor_Gain {
get {
@@ -1681,7 +1681,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Output gain factor 的本地化字符串。
+ /// Output gain factor ıػַ
///
public static string RetinexProcessor_Gain_Desc {
get {
@@ -1690,7 +1690,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Processing Method 的本地化字符串。
+ /// Processing Method ıػַ
///
public static string RetinexProcessor_Method {
get {
@@ -1699,7 +1699,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Select Retinex algorithm type 的本地化字符串。
+ /// Select Retinex algorithm type ıػַ
///
public static string RetinexProcessor_Method_Desc {
get {
@@ -1708,7 +1708,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Retinex Shadow Correction 的本地化字符串。
+ /// Retinex Shadow Correction ıػַ
///
public static string RetinexProcessor_Name {
get {
@@ -1717,7 +1717,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Offset 的本地化字符串。
+ /// Offset ıػַ
///
public static string RetinexProcessor_Offset {
get {
@@ -1726,7 +1726,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Output offset value 的本地化字符串。
+ /// Output offset value ıػַ
///
public static string RetinexProcessor_Offset_Desc {
get {
@@ -1735,7 +1735,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Scale 1 (Small) 的本地化字符串。
+ /// Scale 1 (Small) ıػַ
///
public static string RetinexProcessor_Sigma1 {
get {
@@ -1744,7 +1744,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Small scale Gaussian kernel sigma for detail enhancement 的本地化字符串。
+ /// Small scale Gaussian kernel sigma for detail enhancement ıػַ
///
public static string RetinexProcessor_Sigma1_Desc {
get {
@@ -1753,7 +1753,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Scale 2 (Medium) 的本地化字符串。
+ /// Scale 2 (Medium) ıػַ
///
public static string RetinexProcessor_Sigma2 {
get {
@@ -1762,7 +1762,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Medium scale Gaussian kernel sigma for local illumination correction 的本地化字符串。
+ /// Medium scale Gaussian kernel sigma for local illumination correction ıػַ
///
public static string RetinexProcessor_Sigma2_Desc {
get {
@@ -1771,7 +1771,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Scale 3 (Large) 的本地化字符串。
+ /// Scale 3 (Large) ıػַ
///
public static string RetinexProcessor_Sigma3 {
get {
@@ -1780,7 +1780,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Large scale Gaussian kernel sigma for global illumination correction 的本地化字符串。
+ /// Large scale Gaussian kernel sigma for global illumination correction ıػַ
///
public static string RetinexProcessor_Sigma3_Desc {
get {
@@ -1789,7 +1789,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Angle 的本地化字符串。
+ /// Angle ıػַ
///
public static string RotateProcessor_Angle {
get {
@@ -1798,7 +1798,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Rotation angle in degrees, positive is counter-clockwise 的本地化字符串。
+ /// Rotation angle in degrees, positive is counter-clockwise ıػַ
///
public static string RotateProcessor_Angle_Desc {
get {
@@ -1807,7 +1807,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Background 的本地化字符串。
+ /// Background ıػַ
///
public static string RotateProcessor_BackgroundValue {
get {
@@ -1816,7 +1816,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Background fill value (0-255) for areas outside the original image 的本地化字符串。
+ /// Background fill value (0-255) for areas outside the original image ıػַ
///
public static string RotateProcessor_BackgroundValue_Desc {
get {
@@ -1825,7 +1825,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Rotate image by arbitrary angle with optional canvas expansion 的本地化字符串。
+ /// Rotate image by arbitrary angle with optional canvas expansion ıػַ
///
public static string RotateProcessor_Description {
get {
@@ -1834,7 +1834,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Expand Canvas 的本地化字符串。
+ /// Expand Canvas ıػַ
///
public static string RotateProcessor_ExpandCanvas {
get {
@@ -1843,7 +1843,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Expand canvas to fit the entire rotated image, otherwise crop to original size 的本地化字符串。
+ /// Expand canvas to fit the entire rotated image, otherwise crop to original size ıػַ
///
public static string RotateProcessor_ExpandCanvas_Desc {
get {
@@ -1852,7 +1852,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Interpolation 的本地化字符串。
+ /// Interpolation ıػַ
///
public static string RotateProcessor_Interpolation {
get {
@@ -1861,7 +1861,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Interpolation method: Nearest (fast), Bilinear (smooth), Bicubic (high quality) 的本地化字符串。
+ /// Interpolation method: Nearest (fast), Bilinear (smooth), Bicubic (high quality) ıػַ
///
public static string RotateProcessor_Interpolation_Desc {
get {
@@ -1870,7 +1870,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Rotate 的本地化字符串。
+ /// Rotate ıػַ
///
public static string RotateProcessor_Name {
get {
@@ -1879,7 +1879,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Enhance image edges and details 的本地化字符串。
+ /// Enhance image edges and details ıػַ
///
public static string SharpenProcessor_Description {
get {
@@ -1888,7 +1888,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Kernel Size 的本地化字符串。
+ /// Kernel Size ıػַ
///
public static string SharpenProcessor_KernelSize {
get {
@@ -1897,7 +1897,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Size of sharpening kernel (must be odd) 的本地化字符串。
+ /// Size of sharpening kernel (must be odd) ıػַ
///
public static string SharpenProcessor_KernelSize_Desc {
get {
@@ -1906,7 +1906,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Sharpen Method 的本地化字符串。
+ /// Sharpen Method ıػַ
///
public static string SharpenProcessor_Method {
get {
@@ -1915,7 +1915,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Select sharpening algorithm 的本地化字符串。
+ /// Select sharpening algorithm ıػַ
///
public static string SharpenProcessor_Method_Desc {
get {
@@ -1924,7 +1924,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Sharpen 的本地化字符串。
+ /// Sharpen ıػַ
///
public static string SharpenProcessor_Name {
get {
@@ -1933,7 +1933,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Strength 的本地化字符串。
+ /// Strength ıػַ
///
public static string SharpenProcessor_Strength {
get {
@@ -1942,7 +1942,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Strength of sharpening effect 的本地化字符串。
+ /// Strength of sharpening effect ıػַ
///
public static string SharpenProcessor_Strength_Desc {
get {
@@ -1951,7 +1951,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Edge enhancement and denoising 的本地化字符串。
+ /// Edge enhancement and denoising ıػַ
///
public static string ShockFilterProcessor_Description {
get {
@@ -1960,7 +1960,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Time Step 的本地化字符串。
+ /// Time Step ıػַ
///
public static string ShockFilterProcessor_Dt {
get {
@@ -1969,7 +1969,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Evolution time step 的本地化字符串。
+ /// Evolution time step ıػַ
///
public static string ShockFilterProcessor_Dt_Desc {
get {
@@ -1978,7 +1978,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Iterations 的本地化字符串。
+ /// Iterations ıػַ
///
public static string ShockFilterProcessor_Iterations {
get {
@@ -1987,7 +1987,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Number of filter iterations 的本地化字符串。
+ /// Number of filter iterations ıػַ
///
public static string ShockFilterProcessor_Iterations_Desc {
get {
@@ -1996,7 +1996,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Shock Filter 的本地化字符串。
+ /// Shock Filter ıػַ
///
public static string ShockFilterProcessor_Name {
get {
@@ -2005,7 +2005,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Threshold 的本地化字符串。
+ /// Threshold ıػַ
///
public static string ShockFilterProcessor_Theta {
get {
@@ -2014,7 +2014,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Edge detection threshold 的本地化字符串。
+ /// Edge detection threshold ıػַ
///
public static string ShockFilterProcessor_Theta_Desc {
get {
@@ -2023,7 +2023,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Detect image edges using Sobel operator 的本地化字符串。
+ /// Detect image edges using Sobel operator ıػַ
///
public static string SobelEdgeProcessor_Description {
get {
@@ -2032,7 +2032,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Detection Direction 的本地化字符串。
+ /// Detection Direction ıػַ
///
public static string SobelEdgeProcessor_Direction {
get {
@@ -2041,7 +2041,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Select edge detection direction 的本地化字符串。
+ /// Select edge detection direction ıػַ
///
public static string SobelEdgeProcessor_Direction_Desc {
get {
@@ -2050,7 +2050,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Kernel Size 的本地化字符串。
+ /// Kernel Size ıػַ
///
public static string SobelEdgeProcessor_KernelSize {
get {
@@ -2059,7 +2059,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Sobel operator kernel size (odd number) 的本地化字符串。
+ /// Sobel operator kernel size (odd number) ıػַ
///
public static string SobelEdgeProcessor_KernelSize_Desc {
get {
@@ -2068,7 +2068,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Sobel Edge Detection 的本地化字符串。
+ /// Sobel Edge Detection ıػַ
///
public static string SobelEdgeProcessor_Name {
get {
@@ -2077,7 +2077,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Scale Factor 的本地化字符串。
+ /// Scale Factor ıػַ
///
public static string SobelEdgeProcessor_Scale {
get {
@@ -2086,7 +2086,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Scale factor for edge intensity 的本地化字符串。
+ /// Scale factor for edge intensity ıػַ
///
public static string SobelEdgeProcessor_Scale_Desc {
get {
@@ -2095,7 +2095,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Binarize image 的本地化字符串。
+ /// Binarize image ıػַ
///
public static string ThresholdProcessor_Description {
get {
@@ -2104,7 +2104,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Max Value 的本地化字符串。
+ /// Max Value ıػַ
///
public static string ThresholdProcessor_MaxValue {
get {
@@ -2113,7 +2113,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Pixels above threshold will be set to this value 的本地化字符串。
+ /// Pixels above threshold will be set to this value ıػַ
///
public static string ThresholdProcessor_MaxValue_Desc {
get {
@@ -2122,7 +2122,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Threshold Segmentation 的本地化字符串。
+ /// Threshold Segmentation ıػַ
///
public static string ThresholdProcessor_Name {
get {
@@ -2131,7 +2131,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Threshold 的本地化字符串。
+ /// Threshold ıػַ
///
public static string ThresholdProcessor_Threshold {
get {
@@ -2140,7 +2140,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Binarization threshold, pixels above this value will be set to max value 的本地化字符串。
+ /// Binarization threshold, pixels above this value will be set to max value ıػַ
///
public static string ThresholdProcessor_Threshold_Desc {
get {
@@ -2149,7 +2149,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 Use Otsu Auto Threshold 的本地化字符串。
+ /// Use Otsu Auto Threshold ıػַ
///
public static string ThresholdProcessor_UseOtsu {
get {
@@ -2158,7 +2158,7 @@ namespace ImageProcessing.Processors.Resources {
}
///
- /// 查找类似 When enabled, optimal threshold will be calculated automatically 的本地化字符串。
+ /// When enabled, optimal threshold will be calculated automatically ıػַ
///
public static string ThresholdProcessor_UseOtsu_Desc {
get {
diff --git a/ImageProcessing.Processors/Resources/Resources.resx b/XP.ImageProcessing.Processors/Resources/Resources.resx
similarity index 100%
rename from ImageProcessing.Processors/Resources/Resources.resx
rename to XP.ImageProcessing.Processors/Resources/Resources.resx
diff --git a/ImageProcessing.Processors/Resources/Resources.zh-CN.resx b/XP.ImageProcessing.Processors/Resources/Resources.zh-CN.resx
similarity index 100%
rename from ImageProcessing.Processors/Resources/Resources.zh-CN.resx
rename to XP.ImageProcessing.Processors/Resources/Resources.zh-CN.resx
diff --git a/ImageProcessing.Processors/ImageProcessing.Processors.csproj b/XP.ImageProcessing.Processors/XP.ImageProcessing.Processors.csproj
similarity index 86%
rename from ImageProcessing.Processors/ImageProcessing.Processors.csproj
rename to XP.ImageProcessing.Processors/XP.ImageProcessing.Processors.csproj
index 6db6112..732ba01 100644
--- a/ImageProcessing.Processors/ImageProcessing.Processors.csproj
+++ b/XP.ImageProcessing.Processors/XP.ImageProcessing.Processors.csproj
@@ -5,6 +5,8 @@
enable
enable
true
+ XP.ImageProcessing.Processors
+ XP.ImageProcessing.Processors
@@ -28,7 +30,7 @@
-
+
diff --git a/ImageProcessing.Processors/其他/FilmEffectProcessor.cs b/XP.ImageProcessing.Processors/其他/FilmEffectProcessor.cs
similarity index 93%
rename from ImageProcessing.Processors/其他/FilmEffectProcessor.cs
rename to XP.ImageProcessing.Processors/其他/FilmEffectProcessor.cs
index 2a2c831..a3cc5f7 100644
--- a/ImageProcessing.Processors/其他/FilmEffectProcessor.cs
+++ b/XP.ImageProcessing.Processors/其他/FilmEffectProcessor.cs
@@ -1,24 +1,23 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: FilmEffectProcessor.cs
-// 描述: 电子胶片效果算子,模拟传统X射线胶片的显示效果
+// 文件? FilmEffectProcessor.cs
+// 描述: 电子胶片效果算子,模拟传统X射线胶片的显示效?
// 功能:
-// - 窗宽窗位(Window/Level)调整
-// - 胶片反转(正片/负片)
+// - 窗宽窗位(Window/Level)调?
+// - 胶片反转(正?负片?
// - 多种胶片特性曲线(线性、S曲线、对数、指数)
// - 边缘增强(模拟胶片锐化效果)
-// - 使用查找表(LUT)加速处理
-// 算法: 窗宽窗位映射 + 特性曲线变换
-// 作者: 李伟 wei.lw.li@hexagon.com
+// - 使用查找表(LUT)加速处?
+// 算法: 窗宽窗位映射 + 特性曲线变?
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
-using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 电子胶片效果算子
@@ -103,7 +102,7 @@ public class FilmEffectProcessor : ImageProcessorBase
double curveStrength = GetParameter("CurveStrength");
double edgeEnhance = GetParameter("EdgeEnhance");
- // 构建查找表
+ // 构建查找?
BuildLUT(windowCenter, windowWidth, invert, curve, curveStrength);
// 应用 LUT
@@ -150,14 +149,14 @@ public class FilmEffectProcessor : ImageProcessorBase
for (int i = 0; i < 256; i++)
{
- // 窗宽窗位映射到 [0, 1]
+ // 窗宽窗位映射?[0, 1]
double normalized;
if (ww <= 1)
normalized = i >= wc ? 1.0 : 0.0;
else
normalized = Math.Clamp((i - low) / (high - low), 0.0, 1.0);
- // 应用特性曲线
+ // 应用特性曲?
double mapped = curve switch
{
"Sigmoid" => ApplySigmoid(normalized, strength),
diff --git a/ImageProcessing.Processors/其他/PseudoColorProcessor.cs b/XP.ImageProcessing.Processors/其他/PseudoColorProcessor.cs
similarity index 92%
rename from ImageProcessing.Processors/其他/PseudoColorProcessor.cs
rename to XP.ImageProcessing.Processors/其他/PseudoColorProcessor.cs
index e1af058..ab75243 100644
--- a/ImageProcessing.Processors/其他/PseudoColorProcessor.cs
+++ b/XP.ImageProcessing.Processors/其他/PseudoColorProcessor.cs
@@ -1,25 +1,25 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: PseudoColorProcessor.cs
+// 文件? PseudoColorProcessor.cs
// 描述: 伪色彩渲染算子,将灰度图像映射为彩色图像
// 功能:
// - 支持多种 OpenCV 内置色彩映射表(Jet、Hot、Cool、Rainbow 等)
// - 可选灰度范围裁剪,突出感兴趣的灰度区间
-// - 可选反转色彩映射方向
-// 算法: 查找表(LUT)色彩映射
-// 作者: 李伟 wei.lw.li@hexagon.com
+// - 可选反转色彩映射方?
+// 算法: 查找表(LUT)色彩映?
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 伪色彩渲染算子
+/// 伪色彩渲染算?
///
public class PseudoColorProcessor : ImageProcessorBase
{
@@ -82,11 +82,11 @@ public class PseudoColorProcessor : ImageProcessorBase
OutputData.Clear();
- // 灰度范围裁剪与归一化
+ // 灰度范围裁剪与归一?
Image normalized;
if (minValue > 0 || maxValue < 255)
{
- // 将 [minValue, maxValue] 映射到 [0, 255]
+ // ?[minValue, maxValue] 映射?[0, 255]
normalized = inputImage.Clone();
double scale = 255.0 / Math.Max(maxValue - minValue, 1);
for (int y = 0; y < normalized.Height; y++)
@@ -135,7 +135,7 @@ public class PseudoColorProcessor : ImageProcessorBase
var colorImage = colorMat.ToImage();
- // 将彩色图像存入 OutputData,供 UI 显示
+ // 将彩色图像存?OutputData,供 UI 显示
OutputData["PseudoColorImage"] = colorImage;
_logger.Debug("Process: ColorMap={ColorMap}, MinValue={Min}, MaxValue={Max}, InvertMap={Invert}",
diff --git a/ImageProcessing.Processors/图像变换/GrayscaleProcessor.cs b/XP.ImageProcessing.Processors/图像变换/GrayscaleProcessor.cs
similarity index 89%
rename from ImageProcessing.Processors/图像变换/GrayscaleProcessor.cs
rename to XP.ImageProcessing.Processors/图像变换/GrayscaleProcessor.cs
index 6fb7b53..374e95a 100644
--- a/ImageProcessing.Processors/图像变换/GrayscaleProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像变换/GrayscaleProcessor.cs
@@ -1,25 +1,25 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: GrayscaleProcessor.cs
+// 文件? GrayscaleProcessor.cs
// 描述: 灰度图转换算子,用于将彩色图像转换为灰度图像
// 功能:
// - 标准灰度转换(加权平均)
// - 平均值法
// - 最大值法
// - 最小值法
-// 算法: 加权平均法 Gray = 0.299*R + 0.587*G + 0.114*B
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 算法: 加权平均?Gray = 0.299*R + 0.587*G + 0.114*B
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 灰度图转换算子
+/// 灰度图转换算?
///
public class GrayscaleProcessor : ImageProcessorBase
{
@@ -49,13 +49,13 @@ public class GrayscaleProcessor : ImageProcessorBase
{
string method = GetParameter("Method");
- // 如果输入已经是灰度图,根据方法进行处理
+ // 如果输入已经是灰度图,根据方法进行处?
var result = inputImage.Clone();
switch (method)
{
case "Average":
- // 对于已经是灰度的图像,平均值法不改变图像
+ // 对于已经是灰度的图像,平均值法不改变图?
break;
case "Max":
diff --git a/ImageProcessing.Processors/图像变换/MirrorProcessor.cs b/XP.ImageProcessing.Processors/图像变换/MirrorProcessor.cs
similarity index 87%
rename from ImageProcessing.Processors/图像变换/MirrorProcessor.cs
rename to XP.ImageProcessing.Processors/图像变换/MirrorProcessor.cs
index 39dcd74..79e0e9c 100644
--- a/ImageProcessing.Processors/图像变换/MirrorProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像变换/MirrorProcessor.cs
@@ -1,22 +1,22 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: MirrorProcessor.cs
-// 描述: 镜像算子,用于图像翻转
+// 文件? MirrorProcessor.cs
+// 描述: 镜像算子,用于图像翻?
// 功能:
// - 水平镜像(左右翻转)
// - 垂直镜像(上下翻转)
-// - 对角镜像(水平+垂直翻转,等效180°旋转)
+// - 对角镜像(水?垂直翻转,等?80°旋转?
// 算法: 像素坐标映射
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 镜像算子
diff --git a/ImageProcessing.Processors/图像变换/RotateProcessor.cs b/XP.ImageProcessing.Processors/图像变换/RotateProcessor.cs
similarity index 95%
rename from ImageProcessing.Processors/图像变换/RotateProcessor.cs
rename to XP.ImageProcessing.Processors/图像变换/RotateProcessor.cs
index bf64c8b..ecf8e39 100644
--- a/ImageProcessing.Processors/图像变换/RotateProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像变换/RotateProcessor.cs
@@ -1,24 +1,24 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: RotateProcessor.cs
+// 文件? RotateProcessor.cs
// 描述: 图像旋转算子
// 功能:
// - 任意角度旋转
// - 支持保持原始尺寸或自适应扩展画布
-// - 可选背景填充值
-// - 支持双线性插值
+// - 可选背景填充?
+// - 支持双线性插?
// 算法: 仿射变换旋转
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 图像旋转算子
@@ -101,14 +101,14 @@ public class RotateProcessor : ImageProcessorBase
if (expandCanvas)
{
- // 计算旋转后能容纳整幅图像的画布尺寸
+ // 计算旋转后能容纳整幅图像的画布尺?
double rad = Math.Abs(angle * Math.PI / 180.0);
double sinA = Math.Abs(Math.Sin(rad));
double cosA = Math.Abs(Math.Cos(rad));
dstW = (int)Math.Ceiling(srcW * cosA + srcH * sinA);
dstH = (int)Math.Ceiling(srcW * sinA + srcH * cosA);
- // 调整旋转矩阵的平移分量,使图像居中
+ // 调整旋转矩阵的平移分量,使图像居?
double[] m = new double[6];
rotMat.CopyTo(m);
m[2] += (dstW - srcW) / 2.0;
diff --git a/ImageProcessing.Processors/图像变换/ThresholdProcessor.cs b/XP.ImageProcessing.Processors/图像变换/ThresholdProcessor.cs
similarity index 92%
rename from ImageProcessing.Processors/图像变换/ThresholdProcessor.cs
rename to XP.ImageProcessing.Processors/图像变换/ThresholdProcessor.cs
index 327100d..2dffda2 100644
--- a/ImageProcessing.Processors/图像变换/ThresholdProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像变换/ThresholdProcessor.cs
@@ -1,26 +1,26 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: ThresholdProcessor.cs
+// 文件? ThresholdProcessor.cs
// 描述: 阈值分割算子,用于图像二值化处理
// 功能:
// - 固定阈值二值化
-// - Otsu自动阈值计算
-// - 可调节阈值和最大值
-// - 将灰度图像转换为二值图像
+// - Otsu自动阈值计?
+// - 可调节阈值和最大?
+// - 将灰度图像转换为二值图?
// 算法: 阈值分割、Otsu算法
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 阈值分割算子
+/// 阈值分割算?
///
public class ThresholdProcessor : ImageProcessorBase
{
diff --git a/ImageProcessing.Processors/图像增强/ColorLayerProcessor.cs b/XP.ImageProcessing.Processors/图像增强/ColorLayerProcessor.cs
similarity index 91%
rename from ImageProcessing.Processors/图像增强/ColorLayerProcessor.cs
rename to XP.ImageProcessing.Processors/图像增强/ColorLayerProcessor.cs
index 7d0ba64..adab492 100644
--- a/ImageProcessing.Processors/图像增强/ColorLayerProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像增强/ColorLayerProcessor.cs
@@ -1,26 +1,25 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: ColorLayerProcessor.cs
-// 描述: 色彩分层算子,将灰度图像按亮度区间分层
+// 文件? ColorLayerProcessor.cs
+// 描述: 色彩分层算子,将灰度图像按亮度区间分?
// 功能:
// - 将灰度图像按指定层数均匀分层
-// - 支持自定义分层数(2~16层)
-// - 支持均匀分层和基于 Otsu 的自适应分层
+// - 支持自定义分层数?~16层)
+// - 支持均匀分层和基?Otsu 的自适应分层
// - 可选保留原始灰度或映射为等间距灰度
-// 算法: 灰度量化 / 多阈值分割
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 算法: 灰度量化 / 多阈值分?
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
-using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 色彩分层算子,将灰度图像按亮度区间分为多个层级
+/// 色彩分层算子,将灰度图像按亮度区间分为多个层?
///
public class ColorLayerProcessor : ImageProcessorBase
{
@@ -89,12 +88,12 @@ public class ColorLayerProcessor : ImageProcessorBase
_logger.Debug("Process: Layers={Layers}, Method={Method}, OutputMode={OutputMode}, TargetLayer={TargetLayer}",
layers, method, outputMode, targetLayer);
- // 计算分层阈值
+ // 计算分层阈?
byte[] thresholds = method == "Otsu"
? ComputeOtsuMultiThresholds(inputImage, layers)
: ComputeUniformThresholds(layers);
- // 计算每层的输出灰度值
+ // 计算每层的输出灰度?
byte[] layerValues = ComputeLayerValues(thresholds, layers, outputMode);
// 应用分层映射
@@ -106,7 +105,7 @@ public class ColorLayerProcessor : ImageProcessorBase
if (targetLayer == 0)
{
- // 输出全部层
+ // 输出全部?
Parallel.For(0, height, y =>
{
for (int x = 0; x < width; x++)
@@ -119,8 +118,8 @@ public class ColorLayerProcessor : ImageProcessorBase
}
else
{
- // 只输出指定层:选中层为 255(白),其余为 0(黑)
- int target = targetLayer - 1; // 参数从1开始,内部索引从0开始
+ // 只输出指定层:选中层为 255(白),其余?0(黑?
+ int target = targetLayer - 1; // 参数?开始,内部索引?开?
Parallel.For(0, height, y =>
{
for (int x = 0; x < width; x++)
@@ -137,7 +136,7 @@ public class ColorLayerProcessor : ImageProcessorBase
}
///
- /// 均匀分层阈值:将 [0, 255] 等分
+ /// 均匀分层阈值:?[0, 255] 等分
///
private static byte[] ComputeUniformThresholds(int layers)
{
@@ -153,7 +152,7 @@ public class ColorLayerProcessor : ImageProcessorBase
///
private static byte[] ComputeOtsuMultiThresholds(Image image, int layers)
{
- // 计算直方图
+ // 计算直方?
int[] histogram = new int[256];
var data = image.Data;
int h = image.Height, w = image.Width;
@@ -176,7 +175,7 @@ public class ColorLayerProcessor : ImageProcessorBase
if (layers <= 1 || low >= high)
return;
- // 在 [low, high] 范围内找 Otsu 阈值
+ // ?[low, high] 范围内找 Otsu 阈?
long totalPixels = 0;
long totalSum = 0;
for (int i = low; i <= high; i++)
@@ -220,7 +219,7 @@ public class ColorLayerProcessor : ImageProcessorBase
}
///
- /// 计算每层的输出灰度值
+ /// 计算每层的输出灰度?
///
private static byte[] ComputeLayerValues(byte[] thresholds, int layers, string outputMode)
{
@@ -233,7 +232,7 @@ public class ColorLayerProcessor : ImageProcessorBase
}
else // MidValue
{
- // 每层取区间中值
+ // 每层取区间中?
values[0] = (byte)(thresholds.Length > 0 ? thresholds[0] / 2 : 128);
for (int i = 1; i < layers - 1; i++)
values[i] = (byte)((thresholds[i - 1] + thresholds[i]) / 2);
@@ -243,7 +242,7 @@ public class ColorLayerProcessor : ImageProcessorBase
}
///
- /// 根据阈值数组确定像素所属层级
+ /// 根据阈值数组确定像素所属层?
///
private static int GetLayerIndex(byte pixel, byte[] thresholds)
{
diff --git a/ImageProcessing.Processors/图像增强/ContrastProcessor.cs b/XP.ImageProcessing.Processors/图像增强/ContrastProcessor.cs
similarity index 93%
rename from ImageProcessing.Processors/图像增强/ContrastProcessor.cs
rename to XP.ImageProcessing.Processors/图像增强/ContrastProcessor.cs
index de0e216..bc62084 100644
--- a/ImageProcessing.Processors/图像增强/ContrastProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像增强/ContrastProcessor.cs
@@ -1,26 +1,26 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: ContrastProcessor.cs
-// 描述: 对比度调整算子,用于增强图像对比度
+// 文件? ContrastProcessor.cs
+// 描述: 对比度调整算子,用于增强图像对比?
// 功能:
-// - 线性对比度和亮度调整
-// - 自动对比度拉伸
-// - CLAHE(对比度受限自适应直方图均衡化)
-// - 支持多种对比度增强方法
+// - 线性对比度和亮度调?
+// - 自动对比度拉?
+// - CLAHE(对比度受限自适应直方图均衡化?
+// - 支持多种对比度增强方?
// 算法: 线性变换、直方图均衡化、CLAHE
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 对比度调整算子
+/// 对比度调整算?
///
public class ContrastProcessor : ImageProcessorBase
{
diff --git a/ImageProcessing.Processors/图像增强/GammaProcessor.cs b/XP.ImageProcessing.Processors/图像增强/GammaProcessor.cs
similarity index 93%
rename from ImageProcessing.Processors/图像增强/GammaProcessor.cs
rename to XP.ImageProcessing.Processors/图像增强/GammaProcessor.cs
index c9a85d7..bb9902f 100644
--- a/ImageProcessing.Processors/图像增强/GammaProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像增强/GammaProcessor.cs
@@ -1,22 +1,22 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: GammaProcessor.cs
-// 描述: Gamma校正算子,用于调整图像亮度和对比度
+// 文件? GammaProcessor.cs
+// 描述: Gamma校正算子,用于调整图像亮度和对比?
// 功能:
-// - Gamma非线性校正
+// - Gamma非线性校?
// - 增益调整
-// - 使用查找表(LUT)加速处理
+// - 使用查找表(LUT)加速处?
// - 适用于图像显示和亮度调整
// 算法: Gamma校正公式 output = (input^(1/gamma)) * gain
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// Gamma校正算子
diff --git a/ImageProcessing.Processors/图像增强/HDREnhancementProcessor.cs b/XP.ImageProcessing.Processors/图像增强/HDREnhancementProcessor.cs
similarity index 94%
rename from ImageProcessing.Processors/图像增强/HDREnhancementProcessor.cs
rename to XP.ImageProcessing.Processors/图像增强/HDREnhancementProcessor.cs
index b4730cc..0f12aa6 100644
--- a/ImageProcessing.Processors/图像增强/HDREnhancementProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像增强/HDREnhancementProcessor.cs
@@ -1,26 +1,26 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: HDREnhancementProcessor.cs
-// 描述: 高动态范围(HDR)图像增强算子
+// 文件? HDREnhancementProcessor.cs
+// 描述: 高动态范围(HDR)图像增强算?
// 功能:
-// - 局部色调映射(Local Tone Mapping)
-// - 自适应对数映射(Adaptive Logarithmic Mapping)
+// - 局部色调映射(Local Tone Mapping?
+// - 自适应对数映射(Adaptive Logarithmic Mapping?
// - Drago色调映射
// - 双边滤波色调映射
-// - 增强图像暗部和亮部细节
+// - 增强图像暗部和亮部细?
// 算法: 基于色调映射的HDR增强
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 高动态范围图像增强算子
+/// 高动态范围图像增强算?
///
public class HDREnhancementProcessor : ImageProcessorBase
{
@@ -138,8 +138,8 @@ public class HDREnhancementProcessor : ImageProcessorBase
}
///
- /// 局部色调映射
- /// 将图像分解为基础层(光照)和细节层,分别处理后合成
+ /// 局部色调映?
+ /// 将图像分解为基础层(光照)和细节层,分别处理后合?
/// Base = GaussianBlur(log(I))
/// Detail = log(I) - Base
/// Output = exp(Base_compressed + Detail * boost)
@@ -156,22 +156,22 @@ public class HDREnhancementProcessor : ImageProcessorBase
for (int x = 0; x < width; x++)
floatImage.Data[y, x, 0] = floatImage.Data[y, x, 0] / 255.0f + 0.001f;
- // 对数域
+ // 对数?
var logImage = new Image(width, height);
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
logImage.Data[y, x, 0] = (float)Math.Log(floatImage.Data[y, x, 0]);
- // 基础层:大尺度高斯模糊提取光照分量
+ // 基础层:大尺度高斯模糊提取光照分?
int kernelSize = (int)(sigmaSpace * 6) | 1;
if (kernelSize < 3) kernelSize = 3;
var baseLayer = new Image(width, height);
CvInvoke.GaussianBlur(logImage, baseLayer, new System.Drawing.Size(kernelSize, kernelSize), sigmaSpace);
- // 细节层
+ // 细节?
var detailLayer = logImage - baseLayer;
- // 压缩基础层的动态范围
+ // 压缩基础层的动态范?
double baseMin = double.MaxValue, baseMax = double.MinValue;
for (int y = 0; y < height; y++)
{
@@ -200,7 +200,7 @@ public class HDREnhancementProcessor : ImageProcessorBase
}
}
- // 合成:压缩后的基础层 + 增强的细节层
+ // 合成:压缩后的基础?+ 增强的细节层
var combined = new Image(width, height);
for (int y = 0; y < height; y++)
{
@@ -287,7 +287,7 @@ public class HDREnhancementProcessor : ImageProcessorBase
for (int x = 0; x < width; x++)
floatImage.Data[y, x, 0] /= 255.0f;
- // 计算全局最大亮度
+ // 计算全局最大亮?
float globalMax = 0;
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
@@ -364,7 +364,7 @@ public class HDREnhancementProcessor : ImageProcessorBase
for (int x = 0; x < width; x++)
floatImage.Data[y, x, 0] /= 255.0f;
- // 全局最大亮度
+ // 全局最大亮?
float maxLum = 0;
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
@@ -410,7 +410,7 @@ public class HDREnhancementProcessor : ImageProcessorBase
///
/// 双边滤波色调映射
- /// 使用双边滤波分离基础层和细节层
+ /// 使用双边滤波分离基础层和细节?
/// 双边滤波保边特性使得细节层更加精确
///
private Image BilateralToneMapping(Image inputImage,
@@ -419,20 +419,20 @@ public class HDREnhancementProcessor : ImageProcessorBase
int width = inputImage.Width;
int height = inputImage.Height;
- // 转换为浮点并取对数
+ // 转换为浮点并取对?
var floatImage = inputImage.Convert();
var logImage = new Image(width, height);
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
logImage.Data[y, x, 0] = (float)Math.Log(floatImage.Data[y, x, 0] / 255.0f + 0.001);
- // 双边滤波提取基础层(保边平滑)
+ // 双边滤波提取基础层(保边平滑?
int diameter = (int)(sigmaSpace * 2) | 1;
if (diameter < 3) diameter = 3;
if (diameter > 31) diameter = 31;
var baseLayer = new Image(width, height);
- // 转换为 byte 进行双边滤波,再转回 float
+ // 转换?byte 进行双边滤波,再转回 float
var logNorm = NormalizeToByteImage(logImage);
var baseNorm = new Image(width, height);
CvInvoke.BilateralFilter(logNorm, baseNorm, diameter, sigmaColor, sigmaSpace);
@@ -454,10 +454,10 @@ public class HDREnhancementProcessor : ImageProcessorBase
for (int x = 0; x < width; x++)
baseLayer.Data[y, x, 0] = (float)(baseNorm.Data[y, x, 0] / 255.0 * logRange + logMin);
- // 细节层 = 对数图像 - 基础层
+ // 细节?= 对数图像 - 基础?
var detailLayer = logImage - baseLayer;
- // 压缩基础层
+ // 压缩基础?
double baseMin = double.MaxValue, baseMax = double.MinValue;
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
diff --git a/ImageProcessing.Processors/图像增强/HierarchicalEnhancementProcessor.cs b/XP.ImageProcessing.Processors/图像增强/HierarchicalEnhancementProcessor.cs
similarity index 91%
rename from ImageProcessing.Processors/图像增强/HierarchicalEnhancementProcessor.cs
rename to XP.ImageProcessing.Processors/图像增强/HierarchicalEnhancementProcessor.cs
index db04325..648e0ae 100644
--- a/ImageProcessing.Processors/图像增强/HierarchicalEnhancementProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像增强/HierarchicalEnhancementProcessor.cs
@@ -1,22 +1,21 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: HierarchicalEnhancementProcessor.cs
-// 描述: 层次增强算子,基于多尺度高斯分解对不同尺度细节独立增强
+// 文件? HierarchicalEnhancementProcessor.cs
+// 描述: 层次增强算子,基于多尺度高斯分解对不同尺度细节独立增?
// 功能:
-// - 将图像分解为多层细节层 + 基础层
-// - 对每层细节独立控制增益
-// - 支持基础层亮度调整和对比度限制
+// - 将图像分解为多层细节?+ 基础?
+// - 对每层细节独立控制增?
+// - 支持基础层亮度调整和对比度限?
// 算法: 多尺度高斯差分分解与重建
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
-using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 层次增强算子,基于多尺度高斯差分对不同尺度的图像细节进行独立增强
@@ -106,16 +105,16 @@ public class HierarchicalEnhancementProcessor : ImageProcessorBase
int w = inputImage.Width;
// === 多尺度高斯差分分解(全部在原始分辨率上操作,无需金字塔上下采样) ===
- // 用递增 sigma 的高斯模糊生成平滑层序列:G0(原图), G1, G2, ..., G_n(基础层)
- // 细节层 D_i = G_i - G_{i+1}
+ // 用递增 sigma 的高斯模糊生成平滑层序列:G0(原图), G1, G2, ..., G_n(基础?
+ // 细节?D_i = G_i - G_{i+1}
// 重建:output = sum(D_i * gain_i) + G_n * baseGain
- // 计算每层的高斯 sigma(指数递增)
+ // 计算每层的高?sigma(指数递增?
var sigmas = new double[levels];
for (int i = 0; i < levels; i++)
sigmas[i] = Math.Pow(2, i + 1); // 2, 4, 8, 16, ...
- // 生成平滑层序列(float 数组,避免 Emgu float Image 的问题)
+ // 生成平滑层序列(float 数组,避?Emgu float Image 的问题)
var smoothLayers = new float[levels + 1][]; // [0]=原图, [1..n]=高斯模糊
smoothLayers[0] = new float[h * w];
var srcData = inputImage.Data;
@@ -132,7 +131,7 @@ public class HierarchicalEnhancementProcessor : ImageProcessorBase
if (ksize < 3) ksize = 3;
using var src = new Image(w, h);
- // 从上一层 float 转 byte 做高斯模糊
+ // 从上一?float ?byte 做高斯模?
var prevLayer = smoothLayers[i];
var sd = src.Data;
Parallel.For(0, h, y =>
@@ -181,7 +180,7 @@ public class HierarchicalEnhancementProcessor : ImageProcessorBase
var result = new Image(w, h);
var resultData = result.Data;
- // 预转换 gains 为 float
+ // 预转?gains ?float
var fGains = new float[levels];
for (int i = 0; i < levels; i++)
fGains[i] = (float)gains[i];
@@ -210,4 +209,4 @@ public class HierarchicalEnhancementProcessor : ImageProcessorBase
_logger.Debug("Process completed: {Levels} levels, output={W}x{H}", levels, w, h);
return result;
}
-}
+}
\ No newline at end of file
diff --git a/ImageProcessing.Processors/图像增强/HistogramEqualizationProcessor.cs b/XP.ImageProcessing.Processors/图像增强/HistogramEqualizationProcessor.cs
similarity index 94%
rename from ImageProcessing.Processors/图像增强/HistogramEqualizationProcessor.cs
rename to XP.ImageProcessing.Processors/图像增强/HistogramEqualizationProcessor.cs
index c964049..fa07e15 100644
--- a/ImageProcessing.Processors/图像增强/HistogramEqualizationProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像增强/HistogramEqualizationProcessor.cs
@@ -1,22 +1,22 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: HistogramEqualizationProcessor.cs
+// 文件? HistogramEqualizationProcessor.cs
// 描述: 直方图均衡化算子,用于增强图像对比度
// 功能:
// - 全局直方图均衡化
-// - 自适应直方图均衡化(CLAHE)
-// - 限制对比度增强
+// - 自适应直方图均衡化(CLAHE?
+// - 限制对比度增?
// - 改善图像的整体对比度
// 算法: 直方图均衡化、CLAHE
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 直方图均衡化算子
@@ -122,7 +122,7 @@ public class HistogramEqualizationProcessor : ImageProcessorBase
var limited = floatTile + diff * Math.Min(clipLimit / 10.0, 1.0);
var limitedByte = limited.Convert();
- // 复制到结果图像
+ // 复制到结果图?
result.ROI = roi;
limitedByte.CopyTo(result);
result.ROI = System.Drawing.Rectangle.Empty;
diff --git a/ImageProcessing.Processors/图像增强/HistogramOverlayProcessor.cs b/XP.ImageProcessing.Processors/图像增强/HistogramOverlayProcessor.cs
similarity index 89%
rename from ImageProcessing.Processors/图像增强/HistogramOverlayProcessor.cs
rename to XP.ImageProcessing.Processors/图像增强/HistogramOverlayProcessor.cs
index a9a545c..16faa40 100644
--- a/ImageProcessing.Processors/图像增强/HistogramOverlayProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像增强/HistogramOverlayProcessor.cs
@@ -1,27 +1,27 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: HistogramOverlayProcessor.cs
+// 文件? HistogramOverlayProcessor.cs
// 描述: 直方图叠加算子,计算灰度直方图并以蓝色柱状图绘制到结果图像左上角
// 功能:
// - 计算输入图像的灰度直方图
-// - 将直方图绘制为蓝色半透明柱状图叠加到图像左上角
-// - 输出直方图统计表格数据
-// 算法: 灰度直方图统计 + 彩色图像叠加
-// 作者: 李伟 wei.lw.li@hexagon.com
+// - 将直方图绘制为蓝色半透明柱状图叠加到图像左上?
+// - 输出直方图统计表格数?
+// 算法: 灰度直方图统?+ 彩色图像叠加
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
using System.Text;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 直方图叠加算子,计算灰度直方图并以蓝色柱状图绘制到结果图像左上角,同时输出统计表格
+/// 直方图叠加算子,计算灰度直方图并以蓝色柱状图绘制到结果图像左上角,同时输出统计表?
///
public class HistogramOverlayProcessor : ImageProcessorBase
{
@@ -29,10 +29,11 @@ public class HistogramOverlayProcessor : ImageProcessorBase
// 固定参数
private const int ChartWidth = 256; // 柱状图绘图区宽度
+
private const int ChartHeight = 200; // 柱状图绘图区高度
- private const int AxisMarginLeft = 50; // Y轴标签预留宽度
- private const int AxisMarginBottom = 25; // X轴标签预留高度
- private const int Padding = 8; // 背景额外内边距
+ private const int AxisMarginLeft = 50; // Y轴标签预留宽?
+ private const int AxisMarginBottom = 25; // X轴标签预留高?
+ private const int Padding = 8; // 背景额外内边?
private const int PaddingRight = 25; // 右侧额外内边距(容纳X轴末尾刻度文字)
private const int Margin = 10; // 距图像左上角边距
private const float BgAlpha = 0.6f;
@@ -47,7 +48,7 @@ public class HistogramOverlayProcessor : ImageProcessorBase
protected override void InitializeParameters()
{
- // 无可调参数
+ // 无可调参?
}
public override Image Process(Image inputImage)
@@ -56,7 +57,7 @@ public class HistogramOverlayProcessor : ImageProcessorBase
int w = inputImage.Width;
var srcData = inputImage.Data;
- // === 1. 计算灰度直方图 ===
+ // === 1. 计算灰度直方?===
var hist = new int[256];
for (int y = 0; y < h; y++)
for (int x = 0; x < w; x++)
@@ -95,15 +96,15 @@ public class HistogramOverlayProcessor : ImageProcessorBase
// === 3. 输出表格数据 ===
var sb = new StringBuilder();
- sb.AppendLine("=== 灰度直方图统计 ===");
+ sb.AppendLine("=== 灰度直方图统?===");
sb.AppendLine($"图像尺寸: {w} x {h}");
sb.AppendLine($"总像素数: {totalPixels}");
- sb.AppendLine($"最小灰度: {minVal}");
- sb.AppendLine($"最大灰度: {maxVal}");
+ sb.AppendLine($"最小灰? {minVal}");
+ sb.AppendLine($"最大灰? {maxVal}");
sb.AppendLine($"平均灰度: {mean:F2}");
sb.AppendLine($"中位灰度: {medianVal}");
- sb.AppendLine($"众数灰度: {modeVal} (出现 {modeCount} 次)");
- sb.AppendLine($"标准差: {stdDev:F2}");
+ sb.AppendLine($"众数灰度: {modeVal} (出现 {modeCount} ?");
+ sb.AppendLine($"标准? {stdDev:F2}");
sb.AppendLine();
sb.AppendLine("灰度值\t像素数\t占比(%)");
for (int i = 0; i < 256; i++)
@@ -119,8 +120,8 @@ public class HistogramOverlayProcessor : ImageProcessorBase
var colorImage = inputImage.Convert();
var colorData = colorImage.Data;
- // 布局:背景区域包含 Padding + Y轴标签 + 绘图区 + Padding(水平)
- // Padding + 绘图区 + X轴标签 + Padding(垂直)
+ // 布局:背景区域包?Padding + Y轴标?+ 绘图?+ Padding(水平)
+ // Padding + 绘图?+ X轴标?+ Padding(垂直)
int totalW = Padding + AxisMarginLeft + ChartWidth + PaddingRight;
int totalH = Padding + ChartHeight + AxisMarginBottom + Padding;
int bgW = Math.Min(totalW, w - Margin);
@@ -132,7 +133,7 @@ public class HistogramOverlayProcessor : ImageProcessorBase
int plotH = Math.Min(ChartHeight, bgH - Padding - AxisMarginBottom - Padding);
if (plotW <= 0 || plotH <= 0) goto SkipOverlay;
- // 绘图区左上角在图像中的坐标
+ // 绘图区左上角在图像中的坐?
int plotX0 = Margin + Padding + AxisMarginLeft;
int plotY0 = Margin + Padding;
@@ -163,7 +164,7 @@ public class HistogramOverlayProcessor : ImageProcessorBase
}
});
- // 绘制蓝色柱状图
+ // 绘制蓝色柱状?
Parallel.For(0, plotH, dy =>
{
int imgY = plotY0 + dy;
@@ -187,7 +188,7 @@ public class HistogramOverlayProcessor : ImageProcessorBase
}
});
- // === 5. 绘制坐标轴线和刻度标注 ===
+ // === 5. 绘制坐标轴线和刻度标?===
var white = new MCvScalar(255, 255, 255);
var gray = new MCvScalar(180, 180, 180);
@@ -203,7 +204,7 @@ public class HistogramOverlayProcessor : ImageProcessorBase
new Point(plotX0 + plotW, plotY0 + plotH),
white, 1);
- // X轴刻度: 0, 64, 128, 192, 255
+ // X轴刻? 0, 64, 128, 192, 255
int[] xTicks = { 0, 64, 128, 192, 255 };
foreach (int tick in xTicks)
{
@@ -219,7 +220,7 @@ public class HistogramOverlayProcessor : ImageProcessorBase
FontFace.HersheySimplex, FontScale, white, FontThickness);
}
- // Y轴刻度: 0%, 25%, 50%, 75%, 100%
+ // Y轴刻? 0%, 25%, 50%, 75%, 100%
for (int i = 0; i <= 4; i++)
{
int val = maxCount * i / 4;
@@ -247,7 +248,7 @@ public class HistogramOverlayProcessor : ImageProcessorBase
}
}
- SkipOverlay:
+ SkipOverlay:
OutputData["PseudoColorImage"] = colorImage;
_logger.Debug("Process completed: histogram overlay, mean={Mean:F2}, stdDev={Std:F2}", mean, stdDev);
@@ -255,7 +256,7 @@ public class HistogramOverlayProcessor : ImageProcessorBase
}
///
- /// 格式化像素计数为紧凑字符串(如 12345 → "12.3K")
+ /// 格式化像素计数为紧凑字符串(?12345 ?"12.3K"?
///
private static string FormatCount(int count)
{
@@ -263,4 +264,4 @@ public class HistogramOverlayProcessor : ImageProcessorBase
if (count >= 1_000) return $"{count / 1_000.0:F1}K";
return count.ToString();
}
-}
+}
\ No newline at end of file
diff --git a/ImageProcessing.Processors/图像增强/RetinexProcessor.cs b/XP.ImageProcessing.Processors/图像增强/RetinexProcessor.cs
similarity index 95%
rename from ImageProcessing.Processors/图像增强/RetinexProcessor.cs
rename to XP.ImageProcessing.Processors/图像增强/RetinexProcessor.cs
index 8414907..bd1156d 100644
--- a/ImageProcessing.Processors/图像增强/RetinexProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像增强/RetinexProcessor.cs
@@ -1,6 +1,6 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: RetinexProcessor.cs
+// 文件? RetinexProcessor.cs
// 描述: 基于Retinex的多尺度阴影校正算子
// 功能:
// - 单尺度Retinex (SSR)
@@ -8,19 +8,19 @@
// - 带色彩恢复的多尺度Retinex (MSRCR)
// - 光照不均匀校正
// - 阴影去除
-// 算法: Retinex理论 - 将图像分解为反射分量和光照分量
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 算法: Retinex理论 - 将图像分解为反射分量和光照分?
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// Retinex多尺度阴影校正算子
+/// Retinex多尺度阴影校正算?
///
public class RetinexProcessor : ImageProcessorBase
{
@@ -145,7 +145,7 @@ public class RetinexProcessor : ImageProcessorBase
// 高斯模糊得到光照分量
Image blurred = new Image(inputImage.Size);
- int kernelSize = (int)(sigma * 6) | 1; // 确保为奇数
+ int kernelSize = (int)(sigma * 6) | 1; // 确保为奇?
if (kernelSize < 3) kernelSize = 3;
CvInvoke.GaussianBlur(floatImage, blurred, new System.Drawing.Size(kernelSize, kernelSize), sigma);
@@ -162,7 +162,7 @@ public class RetinexProcessor : ImageProcessorBase
// R = log(I) - log(I*G)
Image retinex = logImage - logBlurred;
- // 应用增益和偏移
+ // 应用增益和偏?
retinex = retinex * gain + offset;
// 归一化到0-255
@@ -183,7 +183,7 @@ public class RetinexProcessor : ImageProcessorBase
///
private Image MultiScaleRetinex(Image inputImage, double[] sigmas, double gain, int offset)
{
- // 转换为浮点图像
+ // 转换为浮点图?
Image floatImage = inputImage.Convert();
floatImage = floatImage + 1.0f;
@@ -197,7 +197,7 @@ public class RetinexProcessor : ImageProcessorBase
}
}
- // 累加多个尺度的结果
+ // 累加多个尺度的结?
Image msrResult = new Image(inputImage.Size);
msrResult.SetZero();
@@ -229,10 +229,10 @@ public class RetinexProcessor : ImageProcessorBase
// 平均
msrResult = msrResult / sigmas.Length;
- // 应用增益和偏移
+ // 应用增益和偏?
msrResult = msrResult * gain + offset;
- // 归一化
+ // 归一?
Image result = NormalizeToByteImage(msrResult);
floatImage.Dispose();
@@ -244,14 +244,14 @@ public class RetinexProcessor : ImageProcessorBase
///
/// 带色彩恢复的多尺度Retinex (MSRCR)
- /// 对于灰度图像,使用简化版本
+ /// 对于灰度图像,使用简化版?
///
private Image MultiScaleRetinexCR(Image inputImage, double[] sigmas, double gain, int offset)
{
// 先执行MSR
Image msrResult = MultiScaleRetinex(inputImage, sigmas, gain, offset);
- // 对于灰度图像,色彩恢复简化为对比度增强
+ // 对于灰度图像,色彩恢复简化为对比度增?
Image floatMsr = msrResult.Convert();
Image floatInput = inputImage.Convert();
@@ -285,7 +285,7 @@ public class RetinexProcessor : ImageProcessorBase
///
private Image NormalizeToByteImage(Image floatImage)
{
- // 找到最小值和最大值
+ // 找到最小值和最大?
double minVal = double.MaxValue;
double maxVal = double.MinValue;
diff --git a/ImageProcessing.Processors/图像增强/SharpenProcessor.cs b/XP.ImageProcessing.Processors/图像增强/SharpenProcessor.cs
similarity index 92%
rename from ImageProcessing.Processors/图像增强/SharpenProcessor.cs
rename to XP.ImageProcessing.Processors/图像增强/SharpenProcessor.cs
index f46b24c..911474e 100644
--- a/ImageProcessing.Processors/图像增强/SharpenProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像增强/SharpenProcessor.cs
@@ -1,23 +1,23 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: SharpenProcessor.cs
+// 文件? SharpenProcessor.cs
// 描述: 锐化算子,用于增强图像边缘和细节
// 功能:
// - 拉普拉斯锐化
-// - 非锐化掩蔽(Unsharp Masking)
-// - 可调节锐化强度
-// - 支持多种锐化核
+// - 非锐化掩蔽(Unsharp Masking?
+// - 可调节锐化强?
+// - 支持多种锐化?
// 算法: 拉普拉斯算子、非锐化掩蔽
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 锐化算子
@@ -94,7 +94,7 @@ public class SharpenProcessor : ImageProcessorBase
var laplacian = new Image(inputImage.Size);
CvInvoke.Laplacian(inputImage, laplacian, DepthType.Cv32F, 1);
- // 转换为字节类型
+ // 转换为字节类?
var laplacianByte = laplacian.Convert();
// 将拉普拉斯结果加到原图上进行锐化
@@ -124,10 +124,10 @@ public class SharpenProcessor : ImageProcessorBase
var floatBlurred = blurred.Convert();
var detail = floatInput - floatBlurred;
- // 将细节加回原图
+ // 将细节加回原?
var sharpened = floatInput + detail * strength;
- // 转换回字节类型
+ // 转换回字节类?
var result = sharpened.Convert();
blurred.Dispose();
diff --git a/ImageProcessing.Processors/图像增强/SubPixelZoomProcessor.cs b/XP.ImageProcessing.Processors/图像增强/SubPixelZoomProcessor.cs
similarity index 92%
rename from ImageProcessing.Processors/图像增强/SubPixelZoomProcessor.cs
rename to XP.ImageProcessing.Processors/图像增强/SubPixelZoomProcessor.cs
index b9a0ce5..6eb2140 100644
--- a/ImageProcessing.Processors/图像增强/SubPixelZoomProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像增强/SubPixelZoomProcessor.cs
@@ -1,27 +1,27 @@
// ============================================================================
// Copyright © 2016-2025 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: SubPixelZoomProcessor.cs
+// 文件? SubPixelZoomProcessor.cs
// 描述: 亚像素放大算子,通过高质量插值实现图像的亚像素级放大
// 功能:
-// - 支持任意倍率放大(含小数倍率如 1.5x、2.3x)
-// - 多种插值方法(最近邻、双线性、双三次、Lanczos)
+// - 支持任意倍率放大(含小数倍率?1.5x?.3x?
+// - 多种插值方法(最近邻、双线性、双三次、Lanczos?
// - 可选锐化补偿(抵消插值模糊)
-// - 可选指定输出尺寸
-// 算法: 基于 OpenCV Resize 的高质量插值放大
-// 作者: 李伟 wei.lw.li@hexagon.com
+// - 可选指定输出尺?
+// 算法: 基于 OpenCV Resize 的高质量插值放?
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 亚像素放大算子
+/// 亚像素放大算?
///
public class SubPixelZoomProcessor : ImageProcessorBase
{
@@ -104,7 +104,7 @@ public class SubPixelZoomProcessor : ImageProcessorBase
if (sharpenAfter)
{
// Unsharp Masking: result = result + strength * (result - blur)
- int ksize = Math.Max(3, (int)(scaleFactor * 2) | 1); // 奇数核
+ int ksize = Math.Max(3, (int)(scaleFactor * 2) | 1); // 奇数?
using var blurred = result.SmoothGaussian(ksize);
for (int y = 0; y < newHeight; y++)
@@ -124,4 +124,4 @@ public class SubPixelZoomProcessor : ImageProcessorBase
return result;
}
-}
+}
\ No newline at end of file
diff --git a/ImageProcessing.Processors/图像增强/SuperResolutionProcessor.cs b/XP.ImageProcessing.Processors/图像增强/SuperResolutionProcessor.cs
similarity index 91%
rename from ImageProcessing.Processors/图像增强/SuperResolutionProcessor.cs
rename to XP.ImageProcessing.Processors/图像增强/SuperResolutionProcessor.cs
index dc57cc2..cb5c135 100644
--- a/ImageProcessing.Processors/图像增强/SuperResolutionProcessor.cs
+++ b/XP.ImageProcessing.Processors/图像增强/SuperResolutionProcessor.cs
@@ -1,27 +1,26 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: SuperResolutionProcessor.cs
-// 描述: 基于深度学习的超分辨率算子
+// 文件? SuperResolutionProcessor.cs
+// 描述: 基于深度学习的超分辨率算?
// 功能:
-// - 支持 EDSR 和 FSRCNN 超分辨率模型(ONNX 格式)
-// - 支持 2x、3x、4x 放大倍率
+// - 支持 EDSR ?FSRCNN 超分辨率模型(ONNX 格式?
+// - 支持 2x?x?x 放大倍率
// - 灰度图像自动转换为三通道输入,推理后转回灰度
// - 模型文件自动搜索,支持自定义路径
// - 使用 Microsoft.ML.OnnxRuntime 进行推理
// 算法: EDSR (Enhanced Deep Residual SR) / FSRCNN (Fast SR CNN)
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Microsoft.ML.OnnxRuntime;
using Microsoft.ML.OnnxRuntime.Tensors;
using Serilog;
-using System.IO;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 基于深度学习的超分辨率算子(EDSR / FSRCNN),使用 ONNX Runtime 推理
@@ -30,8 +29,9 @@ public class SuperResolutionProcessor : ImageProcessorBase
{
private static readonly ILogger _logger = Log.ForContext();
- // 会话缓存,避免重复加载
+ // 会话缓存,避免重复加?
private static InferenceSession? _cachedSession;
+
private static string _cachedModelKey = string.Empty;
public SuperResolutionProcessor()
@@ -76,17 +76,17 @@ public class SuperResolutionProcessor : ImageProcessorBase
{
_logger.Error("Model file not found: {Model}_x{Scale}.onnx", model, scale);
throw new FileNotFoundException(
- $"超分辨率模型文件未找到: {model}_x{scale}.onnx\n" +
+ $"超分辨率模型文件未找? {model}_x{scale}.onnx\n" +
$"请将模型文件放置到以下任一目录:\n" +
$" 1. 程序目录/Models/\n" +
$" 2. 程序目录/\n" +
- $"模型需要 ONNX 格式。\n" +
- $"可使用 tf2onnx 从 .pb 转换:\n" +
+ $"模型需?ONNX 格式。\n" +
+ $"可使?tf2onnx ?.pb 转换:\n" +
$" pip install tf2onnx\n" +
$" python -m tf2onnx.convert --input {model}_x{scale}.pb --output {model}_x{scale}.onnx --inputs input:0 --outputs output:0");
}
- // 加载或复用会话
+ // 加载或复用会?
string modelKey = $"{model}_{scale}";
InferenceSession session;
if (_cachedModelKey == modelKey && _cachedSession != null)
@@ -111,7 +111,7 @@ public class SuperResolutionProcessor : ImageProcessorBase
session = new InferenceSession(modelPath, options);
_cachedSession = session;
_cachedModelKey = modelKey;
- // 记录实际使用的 Execution Provider
+ // 记录实际使用?Execution Provider
var providers = session.ModelMetadata?.CustomMetadataMap;
_logger.Information("Loaded ONNX model: {ModelPath}, Providers: {Providers}",
modelPath, string.Join(", ", session.GetType().Name));
@@ -134,7 +134,7 @@ public class SuperResolutionProcessor : ImageProcessorBase
}
///
- /// 单次推理(小图或 FSRCNN)
+ /// 单次推理(小图或 FSRCNN?
///
private Image ProcessSingle(InferenceSession session, Image inputImage, int scale)
{
@@ -145,8 +145,8 @@ public class SuperResolutionProcessor : ImageProcessorBase
string inputName = session.InputMetadata.Keys.First();
var inputMeta = session.InputMetadata[inputName];
int[] dims = inputMeta.Dimensions;
- // dims 格式: [1, H, W, C] (NHWC),C 可能是 1 或 3
- int inputChannels = dims[^1]; // 最后一维是通道数
+ // dims 格式: [1, H, W, C] (NHWC),C 可能?1 ?3
+ int inputChannels = dims[^1]; // 最后一维是通道?
// 构建输入 tensor: [1, H, W, C] (NHWC)
// 使用底层数组 + Parallel.For 避免逐元素索引开销
@@ -178,7 +178,7 @@ public class SuperResolutionProcessor : ImageProcessorBase
for (int x = 0; x < w; x++)
{
int px = rowOffset + x * 3;
- buf[px] = imgData[y, x, 0];
+ buf[px] = imgData[y, x, 0];
buf[px + 1] = imgData[y, x, 1];
buf[px + 2] = imgData[y, x, 2];
}
@@ -195,13 +195,13 @@ public class SuperResolutionProcessor : ImageProcessorBase
using var results = session.Run(inputs);
var outputTensor = results.First().AsTensor();
- // 输出 shape: [1, C, H*scale, W*scale] (NCHW,模型输出经过 Transpose)
+ // 输出 shape: [1, C, H*scale, W*scale] (NCHW,模型输出经?Transpose)
var shape = outputTensor.Dimensions;
int outC = shape[1];
int outH = shape[2];
int outW = shape[3];
- // 转换为灰度图像
+ // 转换为灰度图?
// 使用 Parallel.For + 直接内存操作
Image result;
if (outC == 1)
@@ -217,7 +217,7 @@ public class SuperResolutionProcessor : ImageProcessorBase
}
else
{
- // EDSR: 三通道输出 [1, 3, outH, outW] → 灰度
+ // EDSR: 三通道输出 [1, 3, outH, outW] ?灰度
// 直接计算灰度值,跳过中间 BGR 图像分配
result = new Image(outW, outH);
var outData = result.Data;
@@ -241,13 +241,13 @@ public class SuperResolutionProcessor : ImageProcessorBase
}
///
- /// 分块推理(大图 EDSR),将图像切成小块分别推理后拼接
+ /// 分块推理(大?EDSR),将图像切成小块分别推理后拼接
///
private Image ProcessTiled(InferenceSession session, Image inputImage, int scale, int tileSize)
{
int h = inputImage.Height;
int w = inputImage.Width;
- int overlap = 8; // 重叠像素,减少拼接边缘伪影
+ int overlap = 8; // 重叠像素,减少拼接边缘伪?
var result = new Image(w * scale, h * scale);
@@ -290,7 +290,7 @@ public class SuperResolutionProcessor : ImageProcessorBase
}
///
- /// 查找模型文件,按优先级搜索多个目录(.onnx 格式)
+ /// 查找模型文件,按优先级搜索多个目录(.onnx 格式?
///
private static string FindModelFile(string model, int scale)
{
diff --git a/ImageProcessing.Processors/形态学处理/MorphologyProcessor.cs b/XP.ImageProcessing.Processors/形态学处理/MorphologyProcessor.cs
similarity index 96%
rename from ImageProcessing.Processors/形态学处理/MorphologyProcessor.cs
rename to XP.ImageProcessing.Processors/形态学处理/MorphologyProcessor.cs
index 5a9942a..a158a7e 100644
--- a/ImageProcessing.Processors/形态学处理/MorphologyProcessor.cs
+++ b/XP.ImageProcessing.Processors/形态学处理/MorphologyProcessor.cs
@@ -1,6 +1,6 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: MorphologyProcessor.cs
+// 文件? MorphologyProcessor.cs
// 描述: 形态学处理算子,用于二值图像的形态学操作
// 功能:
// - 腐蚀(Erode):收缩目标区域
@@ -8,17 +8,17 @@
// - 开运算(Open):先腐蚀后膨胀,去除小目标
// - 闭运算(Close):先膨胀后腐蚀,填充小孔洞
// 算法: 数学形态学运算
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 形态学处理算子
diff --git a/ImageProcessing.Processors/数学运算/DifferenceProcessor.cs b/XP.ImageProcessing.Processors/数学运算/DifferenceProcessor.cs
similarity index 91%
rename from ImageProcessing.Processors/数学运算/DifferenceProcessor.cs
rename to XP.ImageProcessing.Processors/数学运算/DifferenceProcessor.cs
index 93c6b54..d639401 100644
--- a/ImageProcessing.Processors/数学运算/DifferenceProcessor.cs
+++ b/XP.ImageProcessing.Processors/数学运算/DifferenceProcessor.cs
@@ -1,23 +1,23 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: DifferenceProcessor.cs
-// 描述: 差分运算算子,用于边缘检测和变化检测
+// 文件? DifferenceProcessor.cs
+// 描述: 差分运算算子,用于边缘检测和变化检?
// 功能:
-// - 对图像进行差分运算
-// - 支持水平、垂直和对角线差分
-// - 可用于边缘检测
-// - 可选归一化输出
-// 算法: 像素级差分运算
-// 作者: 李伟 wei.lw.li@hexagon.com
+// - 对图像进行差分运?
+// - 支持水平、垂直和对角线差?
+// - 可用于边缘检?
+// - 可选归一化输?
+// 算法: 像素级差分运?
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 差分运算算子
@@ -96,7 +96,7 @@ public class DifferenceProcessor : ImageProcessorBase
}
else // Both
{
- // 梯度幅值: sqrt((dx)^2 + (dy)^2)
+ // 梯度幅? sqrt((dx)^2 + (dy)^2)
for (int y = 0; y < height - 1; y++)
{
for (int x = 0; x < width - 1; x++)
diff --git a/ImageProcessing.Processors/数学运算/DivisionProcessor.cs b/XP.ImageProcessing.Processors/数学运算/DivisionProcessor.cs
similarity index 89%
rename from ImageProcessing.Processors/数学运算/DivisionProcessor.cs
rename to XP.ImageProcessing.Processors/数学运算/DivisionProcessor.cs
index 2414c06..d2c8588 100644
--- a/ImageProcessing.Processors/数学运算/DivisionProcessor.cs
+++ b/XP.ImageProcessing.Processors/数学运算/DivisionProcessor.cs
@@ -1,23 +1,23 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: DivisionProcessor.cs
-// 描述: 除法运算算子,用于图像归一化处理
+// 文件? DivisionProcessor.cs
+// 描述: 除法运算算子,用于图像归一化处?
// 功能:
-// - 对图像像素值进行除法运算
+// - 对图像像素值进行除法运?
// - 支持缩放因子调整
// - 可选归一化到0-255范围
-// - 常用于背景校正和图像归一化
-// 算法: 像素级除法运算
-// 作者: 李伟 wei.lw.li@hexagon.com
+// - 常用于背景校正和图像归一?
+// 算法: 像素级除法运?
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 除法运算算子
diff --git a/ImageProcessing.Processors/数学运算/IntegralProcessor.cs b/XP.ImageProcessing.Processors/数学运算/IntegralProcessor.cs
similarity index 89%
rename from ImageProcessing.Processors/数学运算/IntegralProcessor.cs
rename to XP.ImageProcessing.Processors/数学运算/IntegralProcessor.cs
index 1cf7996..162013f 100644
--- a/ImageProcessing.Processors/数学运算/IntegralProcessor.cs
+++ b/XP.ImageProcessing.Processors/数学运算/IntegralProcessor.cs
@@ -1,22 +1,22 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: IntegralProcessor.cs
-// 描述: 积分运算算子,计算积分图像
+// 文件? IntegralProcessor.cs
+// 描述: 积分运算算子,计算积分图?
// 功能:
-// - 计算积分图像(累加和)
-// - 用于快速区域求和
-// - 支持归一化输出
+// - 计算积分图像(累加和?
+// - 用于快速区域求?
+// - 支持归一化输?
// 算法: 积分图像算法
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 积分运算算子
diff --git a/ImageProcessing.Processors/数学运算/MultiplicationProcessor.cs b/XP.ImageProcessing.Processors/数学运算/MultiplicationProcessor.cs
similarity index 88%
rename from ImageProcessing.Processors/数学运算/MultiplicationProcessor.cs
rename to XP.ImageProcessing.Processors/数学运算/MultiplicationProcessor.cs
index 46d758e..42bb537 100644
--- a/ImageProcessing.Processors/数学运算/MultiplicationProcessor.cs
+++ b/XP.ImageProcessing.Processors/数学运算/MultiplicationProcessor.cs
@@ -1,23 +1,23 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: MultiplicationProcessor.cs
-// 描述: 乘法运算算子,用于图像增强
+// 文件? MultiplicationProcessor.cs
+// 描述: 乘法运算算子,用于图像增?
// 功能:
-// - 对图像像素值进行乘法运算
+// - 对图像像素值进行乘法运?
// - 支持增益调整
-// - 可选归一化输出
-// - 常用于图像增强和对比度调整
-// 算法: 像素级乘法运算
-// 作者: 李伟 wei.lw.li@hexagon.com
+// - 可选归一化输?
+// - 常用于图像增强和对比度调?
+// 算法: 像素级乘法运?
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 乘法运算算子
diff --git a/ImageProcessing.Processors/数学运算/OrProcessor.cs b/XP.ImageProcessing.Processors/数学运算/OrProcessor.cs
similarity index 91%
rename from ImageProcessing.Processors/数学运算/OrProcessor.cs
rename to XP.ImageProcessing.Processors/数学运算/OrProcessor.cs
index 60e1a1d..c130750 100644
--- a/ImageProcessing.Processors/数学运算/OrProcessor.cs
+++ b/XP.ImageProcessing.Processors/数学运算/OrProcessor.cs
@@ -1,24 +1,24 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: OrProcessor.cs
+// 文件? OrProcessor.cs
// 描述: 或运算算子,用于图像逻辑运算
// 功能:
// - 对图像进行按位或运算
// - 支持与固定值或运算
// - 可用于图像合并和掩码操作
// 算法: 像素级按位或运算
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 或运算算子
+/// 或运算算?
///
public class OrProcessor : ImageProcessorBase
{
diff --git a/ImageProcessing.Processors/检测分析/AngleMeasurementProcessor.cs b/XP.ImageProcessing.Processors/检测分析/AngleMeasurementProcessor.cs
similarity index 88%
rename from ImageProcessing.Processors/检测分析/AngleMeasurementProcessor.cs
rename to XP.ImageProcessing.Processors/检测分析/AngleMeasurementProcessor.cs
index b3b4f43..6e5020d 100644
--- a/ImageProcessing.Processors/检测分析/AngleMeasurementProcessor.cs
+++ b/XP.ImageProcessing.Processors/检测分析/AngleMeasurementProcessor.cs
@@ -1,19 +1,19 @@
// ============================================================================
-// 文件名: AngleMeasurementProcessor.cs
-// 描述: 角度测量算子 — 共端点的两条直线夹角
+// 文件? AngleMeasurementProcessor.cs
+// 描述: 角度测量算子 ?共端点的两条直线夹角
// 功能:
-// - 用户定义三个点:端点(顶点)、射线1终点、射线2终点
-// - 计算两条射线之间的夹角(0°~180°)
+// - 用户定义三个点:端点(顶点)、射?终点、射?终点
+// - 计算两条射线之间的夹角(0°~180°?
// - 在图像上绘制两条射线、角度弧线和标注
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
public class AngleMeasurementProcessor : ImageProcessorBase
{
@@ -27,7 +27,7 @@ public class AngleMeasurementProcessor : ImageProcessorBase
protected override void InitializeParameters()
{
- // 三个点坐标(由交互控件注入,使用 double 避免取整误差)
+ // 三个点坐标(由交互控件注入,使用 double 避免取整误差?
Parameters.Add("VX", new ProcessorParameter("VX", "VX", typeof(double), 250.0, null, null, "") { IsVisible = false });
Parameters.Add("VY", new ProcessorParameter("VY", "VY", typeof(double), 250.0, null, null, "") { IsVisible = false });
Parameters.Add("AX", new ProcessorParameter("AX", "AX", typeof(double), 100.0, null, null, "") { IsVisible = false });
@@ -44,7 +44,7 @@ public class AngleMeasurementProcessor : ImageProcessorBase
OutputData.Clear();
- // 向量 VA 和 VB
+ // 向量 VA ?VB
double vax = ax - vx, vay = ay - vy;
double vbx = bx - vx, vby = by - vy;
@@ -59,11 +59,11 @@ public class AngleMeasurementProcessor : ImageProcessorBase
angleDeg = Math.Acos(cosAngle) * 180.0 / Math.PI;
}
- // 计算角度弧的起始角和扫过角(用于绘制弧线)
+ // 计算角度弧的起始角和扫过角(用于绘制弧线?
double angleA = Math.Atan2(vay, vax) * 180.0 / Math.PI;
double angleB = Math.Atan2(vby, vbx) * 180.0 / Math.PI;
- // 确保从 angleA 到 angleB 的扫过方向是较小的夹角
+ // 确保?angleA ?angleB 的扫过方向是较小的夹?
double sweep = angleB - angleA;
if (sweep > 180) sweep -= 360;
if (sweep < -180) sweep += 360;
@@ -84,4 +84,4 @@ public class AngleMeasurementProcessor : ImageProcessorBase
return inputImage.Clone();
}
-}
+}
\ No newline at end of file
diff --git a/ImageProcessing.Processors/检测分析/BgaVoidRateProcessor.cs b/XP.ImageProcessing.Processors/检测分析/BgaVoidRateProcessor.cs
similarity index 91%
rename from ImageProcessing.Processors/检测分析/BgaVoidRateProcessor.cs
rename to XP.ImageProcessing.Processors/检测分析/BgaVoidRateProcessor.cs
index d99ffdc..44b9902 100644
--- a/ImageProcessing.Processors/检测分析/BgaVoidRateProcessor.cs
+++ b/XP.ImageProcessing.Processors/检测分析/BgaVoidRateProcessor.cs
@@ -1,27 +1,27 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: BgaVoidRateProcessor.cs
-// 描述: BGA 空洞率检测算子(两步自动检测法)
+// 文件? BgaVoidRateProcessor.cs
+// 描述: BGA 空洞率检测算子(两步自动检测法?
//
// 处理流程:
-// 第一步 — 焊球定位: 高斯模糊 → Otsu反向二值化 → 闭运算 → 轮廓检测 → 圆度过滤 → 椭圆拟合
-// 第二步 — 气泡检测: 焊球轮廓掩码 → 双阈值分割 → 轮廓检测 → 面积过滤 → 气泡率计算
+// 第一??焊球定位: 高斯模糊 ?Otsu反向二值化 ?闭运??轮廓检??圆度过滤 ?椭圆拟合
+// 第二??气泡检? 焊球轮廓掩码 ?双阈值分??轮廓检??面积过滤 ?气泡率计?
//
// 支持多边形ROI限定检测区域,支持IPC-7095标准PASS/FAIL判定
-// 正片模式:焊球=暗区域,气泡=亮区域
+// 正片模式:焊?暗区域,气泡=亮区?
//
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using Emgu.CV.Util;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
public class BgaVoidRateProcessor : ImageProcessorBase
{
@@ -43,7 +43,7 @@ public class BgaVoidRateProcessor : ImageProcessorBase
LocalizationHelper.GetString("BgaVoidRateProcessor_RoiMode_Desc"),
new string[] { "None", "Polygon" }));
- // 多边形ROI点数和坐标(由UI注入,不可见,最多支持32个点)
+ // 多边形ROI点数和坐标(由UI注入,不可见,最多支?2个点?
Parameters.Add("PolyCount", new ProcessorParameter("PolyCount", "PolyCount", typeof(int), 0, null, null, "") { IsVisible = false });
for (int i = 0; i < 32; i++)
{
@@ -76,7 +76,7 @@ public class BgaVoidRateProcessor : ImageProcessorBase
typeof(double), 0.5, 0.0, 1.0,
LocalizationHelper.GetString("BgaVoidRateProcessor_BgaCircularity_Desc")));
- // ── 第二步:气泡检测参数 ──
+ // ── 第二步:气泡检测参?──
Parameters.Add("MinThreshold", new ProcessorParameter(
"MinThreshold",
LocalizationHelper.GetString("BgaVoidRateProcessor_MinThreshold"),
@@ -148,7 +148,7 @@ public class BgaVoidRateProcessor : ImageProcessorBase
OutputData["RoiMode"] = roiMode;
OutputData["RoiMask"] = roiMask;
- _logger.Debug("BgaVoidRate 两步法: BgaArea=[{Min},{Max}], Blur={Blur}, Circ={Circ}, Thresh=[{TMin},{TMax}]",
+ _logger.Debug("BgaVoidRate 两步? BgaArea=[{Min},{Max}], Blur={Blur}, Circ={Circ}, Thresh=[{TMin},{TMax}]",
bgaMinArea, bgaMaxArea, bgaBlurSize, bgaCircularity, minThresh, maxThresh);
// ================================================================
@@ -156,7 +156,7 @@ public class BgaVoidRateProcessor : ImageProcessorBase
// ================================================================
var bgaResults = DetectBgaBalls(inputImage, bgaBlurSize, bgaMinArea, bgaMaxArea, bgaCircularity, roiMask);
- _logger.Information("第一步完成: 检测到 {Count} 个BGA焊球", bgaResults.Count);
+ _logger.Information("第一步完? 检测到 {Count} 个BGA焊球", bgaResults.Count);
if (bgaResults.Count == 0)
{
@@ -176,7 +176,7 @@ public class BgaVoidRateProcessor : ImageProcessorBase
}
// ================================================================
- // 第二步:在每个焊球区域内检测气泡
+ // 第二步:在每个焊球区域内检测气?
// ================================================================
int totalBgaArea = 0;
int totalVoidArea = 0;
@@ -193,13 +193,13 @@ public class BgaVoidRateProcessor : ImageProcessorBase
double overallVoidRate = totalBgaArea > 0 ? (double)totalVoidArea / totalBgaArea * 100.0 : 0;
string classification = overallVoidRate <= voidLimit ? "PASS" : "FAIL";
- // 检查每个焊球是否单独超标
+ // 检查每个焊球是否单独超?
foreach (var bga in bgaResults)
{
bga.Classification = bga.VoidRate <= voidLimit ? "PASS" : "FAIL";
}
- _logger.Information("第二步完成: 总气泡率={VoidRate:F1}%, 气泡数={Count}, 判定={Class}",
+ _logger.Information("第二步完? 总气泡率={VoidRate:F1}%, 气泡?{Count}, 判定={Class}",
overallVoidRate, totalVoidCount, classification);
// 输出数据
@@ -222,7 +222,7 @@ public class BgaVoidRateProcessor : ImageProcessorBase
///
/// 第一步:自动检测BGA焊球位置
- /// 使用Otsu二值化 + 轮廓检测 + 圆度过滤 + 椭圆拟合
+ /// 使用Otsu二值化 + 轮廓检?+ 圆度过滤 + 椭圆拟合
///
private List DetectBgaBalls(Image input, int blurSize, int minArea, int maxArea, double minCircularity, Image? roiMask)
{
@@ -233,7 +233,7 @@ public class BgaVoidRateProcessor : ImageProcessorBase
var blurred = new Image(w, h);
CvInvoke.GaussianBlur(input, blurred, new Size(blurSize, blurSize), 0);
- // Otsu自动二值化(X-Ray正片:焊球=暗区域)
+ // Otsu自动二值化(X-Ray正片:焊?暗区域)
var binary = new Image(w, h);
CvInvoke.Threshold(blurred, binary, 0, 255, ThresholdType.Otsu | ThresholdType.BinaryInv);
@@ -264,7 +264,7 @@ public class BgaVoidRateProcessor : ImageProcessorBase
double circularity = 4.0 * Math.PI * area / (perimeter * perimeter);
if (circularity < minCircularity) continue;
- // 需要至少5个点才能拟合椭圆
+ // 需要至?个点才能拟合椭圆
if (contours[i].Size < 5) continue;
var ellipse = CvInvoke.FitEllipse(contours[i]);
@@ -284,7 +284,7 @@ public class BgaVoidRateProcessor : ImageProcessorBase
});
}
- // 按面积从大到小排序
+ // 按面积从大到小排?
results.Sort((a, b) => b.BgaArea.CompareTo(a.BgaArea));
for (int i = 0; i < results.Count; i++) results[i].Index = i + 1;
@@ -296,8 +296,8 @@ public class BgaVoidRateProcessor : ImageProcessorBase
}
///
- /// 第二步:在单个BGA焊球区域内检测气泡
- /// 使用焊球轮廓作为掩码,双阈值分割气泡区域
+ /// 第二步:在单个BGA焊球区域内检测气?
+ /// 使用焊球轮廓作为掩码,双阈值分割气泡区?
///
private void DetectVoidsInBga(Image input, BgaBallInfo bga, int minThresh, int maxThresh, int minVoidArea)
{
@@ -314,7 +314,7 @@ public class BgaVoidRateProcessor : ImageProcessorBase
int bgaPixels = CvInvoke.CountNonZero(mask);
bga.BgaArea = bgaPixels;
- // 双阈值分割(正片模式:气泡=亮,灰度在[minThresh, maxThresh]范围内判为气泡)
+ // 双阈值分割(正片模式:气?亮,灰度在[minThresh, maxThresh]范围内判为气泡)
var voidImg = new Image(w, h);
byte[,,] srcData = input.Data;
byte[,,] dstData = voidImg.Data;
@@ -361,7 +361,7 @@ public class BgaVoidRateProcessor : ImageProcessorBase
});
}
- // 按面积从大到小排序
+ // 按面积从大到小排?
bga.Voids.Sort((a, b) => b.Area.CompareTo(a.Area));
for (int i = 0; i < bga.Voids.Count; i++) bga.Voids[i].Index = i + 1;
@@ -400,4 +400,4 @@ public class VoidInfo
public double AreaPercent { get; set; }
public Rectangle BoundingBox { get; set; }
public Point[] ContourPoints { get; set; } = Array.Empty();
-}
+}
\ No newline at end of file
diff --git a/ImageProcessing.Processors/检测分析/ContourDetectionProcessor.cs b/XP.ImageProcessing.Processors/检测分析/ContourDetectionProcessor.cs
similarity index 94%
rename from ImageProcessing.Processors/检测分析/ContourDetectionProcessor.cs
rename to XP.ImageProcessing.Processors/检测分析/ContourDetectionProcessor.cs
index 1d3ddcf..c5ada86 100644
--- a/ImageProcessing.Processors/检测分析/ContourDetectionProcessor.cs
+++ b/XP.ImageProcessing.Processors/检测分析/ContourDetectionProcessor.cs
@@ -1,25 +1,25 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: ContourProcessor.cs
+// 文件? ContourProcessor.cs
// 描述: 轮廓查找算子,用于检测和分析图像中的轮廓
// 功能:
-// - 检测图像中的外部轮廓
+// - 检测图像中的外部轮?
// - 根据面积范围过滤轮廓
-// - 计算轮廓的几何特征(面积、周长、中心、外接矩形等)
-// - 输出轮廓信息供后续处理使用
-// 算法: 基于OpenCV的轮廓检测算法
-// 作者: 李伟 wei.lw.li@hexagon.com
+// - 计算轮廓的几何特征(面积、周长、中心、外接矩形等?
+// - 输出轮廓信息供后续处理使?
+// 算法: 基于OpenCV的轮廓检测算?
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using Emgu.CV.Util;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 轮廓查找算子
@@ -117,7 +117,7 @@ public class ContourProcessor : ImageProcessorBase
OutputData.Clear();
- // 创建输入图像的副本用于处理
+ // 创建输入图像的副本用于处?
Image processImage = inputImage.Clone();
// 步骤1:如果启用阈值分割,先进行二值化
@@ -128,18 +128,18 @@ public class ContourProcessor : ImageProcessorBase
if (useOtsu)
{
- // 使用Otsu自动阈值
+ // 使用Otsu自动阈?
CvInvoke.Threshold(processImage, thresholdImage, 0, 255, ThresholdType.Otsu);
_logger.Debug("Applied Otsu threshold");
}
else
{
- // 使用固定阈值
+ // 使用固定阈?
CvInvoke.Threshold(processImage, thresholdImage, thresholdValue, 255, ThresholdType.Binary);
_logger.Debug("Applied binary threshold with value {ThresholdValue}", thresholdValue);
}
- // 保存阈值处理后的图像用于调试
+ // 保存阈值处理后的图像用于调?
try
{
string debugPath = Path.Combine("logs", $"contour_threshold_{DateTime.Now:yyyyMMdd_HHmmss}.png");
@@ -156,7 +156,7 @@ public class ContourProcessor : ImageProcessorBase
processImage = thresholdImage;
}
- // 步骤2:如果目标是黑色区域,需要反转图像
+ // 步骤2:如果目标是黑色区域,需要反转图?
bool isBlackTarget = targetColor != null &&
(targetColor.Equals("Black", StringComparison.OrdinalIgnoreCase) ||
targetColor.Equals("黑色", StringComparison.OrdinalIgnoreCase));
@@ -180,7 +180,7 @@ public class ContourProcessor : ImageProcessorBase
}
}
- // 步骤3:查找轮廓
+ // 步骤3:查找轮?
using (VectorOfVectorOfPoint contours = new VectorOfVectorOfPoint())
{
Mat hierarchy = new Mat();
diff --git a/ImageProcessing.Processors/检测分析/EllipseDetectionProcessor.cs b/XP.ImageProcessing.Processors/检测分析/EllipseDetectionProcessor.cs
similarity index 94%
rename from ImageProcessing.Processors/检测分析/EllipseDetectionProcessor.cs
rename to XP.ImageProcessing.Processors/检测分析/EllipseDetectionProcessor.cs
index 012ed26..1e29ade 100644
--- a/ImageProcessing.Processors/检测分析/EllipseDetectionProcessor.cs
+++ b/XP.ImageProcessing.Processors/检测分析/EllipseDetectionProcessor.cs
@@ -1,53 +1,64 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: EllipseDetectionProcessor.cs
-// 描述: 椭圆检测算子,基于轮廓分析和椭圆拟合检测图像中的椭圆
+// 文件? EllipseDetectionProcessor.cs
+// 描述: 椭圆检测算子,基于轮廓分析和椭圆拟合检测图像中的椭?
// 功能:
-// - 阈值分割 + 轮廓提取
-// - 椭圆拟合(FitEllipse)
-// - 面积/轴长/离心率/拟合误差多维过滤
-// - 支持双阈值分割和 Otsu 自动阈值
-// 算法: 阈值分割 + OpenCV FitEllipse
-// 作者: 李伟 wei.lw.li@hexagon.com
+// - 阈值分?+ 轮廓提取
+// - 椭圆拟合(FitEllipse?
+// - 面积/轴长/离心?拟合误差多维过滤
+// - 支持双阈值分割和 Otsu 自动阈?
+// 算法: 阈值分?+ OpenCV FitEllipse
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using Emgu.CV.Util;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 椭圆检测结果
+/// 椭圆检测结?
///
public class EllipseInfo
{
/// 序号
public int Index { get; set; }
+
/// 中心点X
public float CenterX { get; set; }
+
/// 中心点Y
public float CenterY { get; set; }
+
/// 长轴长度
public float MajorAxis { get; set; }
+
/// 短轴长度
public float MinorAxis { get; set; }
- /// 旋转角度(度)
+
+ /// 旋转角度(度?/summary>
public float Angle { get; set; }
+
/// 面积
public double Area { get; set; }
+
/// 周长
public double Perimeter { get; set; }
- /// 离心率 (0=圆, 接近1=扁椭圆)
+
+ /// 离心?(0=? 接近1=扁椭?
public double Eccentricity { get; set; }
+
/// 拟合误差(像素)
public double FitError { get; set; }
+
/// 轮廓点集
public Point[] ContourPoints { get; set; } = Array.Empty();
+
/// 外接矩形
public Rectangle BoundingBox { get; set; }
}
@@ -70,7 +81,7 @@ public class EllipseDetector
public double MaxFitError { get; set; } = 5.0;
public int Thickness { get; set; } = 2;
- /// 执行椭圆检测
+ /// 执行椭圆检?/summary>
public List Detect(Image inputImage, Image? roiMask = null)
{
_logger.Debug("Ellipse detection started: UseOtsu={UseOtsu}, MinThreshold={Min}, MaxThreshold={Max}",
@@ -186,7 +197,7 @@ public class EllipseDetector
}
///
-/// 椭圆检测算子
+/// 椭圆检测算?
///
public class EllipseDetectionProcessor : ImageProcessorBase
{
@@ -200,7 +211,7 @@ public class EllipseDetectionProcessor : ImageProcessorBase
protected override void InitializeParameters()
{
- // ── 多边形ROI(由UI注入,最多32个点) ──
+ // ── 多边形ROI(由UI注入,最?2个点?──
Parameters.Add("PolyCount", new ProcessorParameter("PolyCount", "PolyCount", typeof(int), 0, null, null, "") { IsVisible = false });
for (int i = 0; i < 32; i++)
{
@@ -300,4 +311,4 @@ public class EllipseDetectionProcessor : ImageProcessorBase
_logger.Information("Ellipse detection completed: detected {Count} ellipses", ellipses.Count);
return inputImage.Clone();
}
-}
+}
\ No newline at end of file
diff --git a/ImageProcessing.Processors/检测分析/FillRateProcessor.cs b/XP.ImageProcessing.Processors/检测分析/FillRateProcessor.cs
similarity index 87%
rename from ImageProcessing.Processors/检测分析/FillRateProcessor.cs
rename to XP.ImageProcessing.Processors/检测分析/FillRateProcessor.cs
index 82deeb2..b504ed9 100644
--- a/ImageProcessing.Processors/检测分析/FillRateProcessor.cs
+++ b/XP.ImageProcessing.Processors/检测分析/FillRateProcessor.cs
@@ -1,28 +1,28 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: FillRateProcessor.cs
+// 文件? FillRateProcessor.cs
// 描述: 通孔填锡率测量算子(倾斜投影几何法),基于四椭圆ROI
// 功能:
-// - 样品倾斜约45°放置,利用投影位移关系计算填锡率
-// - 四个椭圆定义:
+// - 样品倾斜?5°放置,利用投影位移关系计算填锡率
+// - 四个椭圆定义?
// E1 = 通孔底部轮廓
// E2 = 通孔顶部轮廓
-// E3 = 填锡起点(与E1重合,代表0%填锡)
-// E4 = 填锡终点(锡实际填充到的高度)
-// - 填锡率 = |E4中心 - E3中心| / |E2中心 - E1中心| × 100%
-// - 纯几何方法,不依赖灰度分析
-// - IPC-610 THT 分级判定(Class 1/2/3)
+// E3 = 填锡起点(与E1重合,代?%填锡?
+// E4 = 填锡终点(锡实际填充到的高度?
+// - 填锡?= |E4中心 - E3中心| / |E2中心 - E1中心| × 100%
+// - 纯几何方法,不依赖灰度分?
+// - IPC-610 THT 分级判定(Class 1/2/3?
// 算法: 倾斜投影位移比例
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 通孔填锡率测量算子(倾斜投影几何法)
@@ -42,7 +42,7 @@ public class FillRateProcessor : ImageProcessorBase
// 四个椭圆(由交互控件注入,UI不可见)
AddEllipseParams("E1", 200, 250, 60, 50, 0); // 底部
AddEllipseParams("E2", 220, 180, 60, 50, 0); // 顶部
- AddEllipseParams("E3", 200, 250, 60, 50, 0); // 填锡起点(=E1)
+ AddEllipseParams("E3", 200, 250, 60, 50, 0); // 填锡起点?E1?
AddEllipseParams("E4", 210, 220, 55, 45, 0); // 填锡终点
Parameters.Add("THTLimit", new ProcessorParameter(
@@ -78,7 +78,7 @@ public class FillRateProcessor : ImageProcessorBase
int e3cx = GetParameter("E3_CX"), e3cy = GetParameter("E3_CY");
int e4cx = GetParameter("E4_CX"), e4cy = GetParameter("E4_CY");
- // 获取椭圆轴参数(用于绘制)
+ // 获取椭圆轴参数(用于绘制?
double e1a = GetParameter("E1_A"), e1b = GetParameter("E1_B"), e1ang = GetParameter("E1_Angle");
double e2a = GetParameter("E2_A"), e2b = GetParameter("E2_B"), e2ang = GetParameter("E2_Angle");
double e3a = GetParameter("E3_A"), e3b = GetParameter("E3_B"), e3ang = GetParameter("E3_Angle");
@@ -89,17 +89,17 @@ public class FillRateProcessor : ImageProcessorBase
OutputData.Clear();
- // 计算通孔全高度的投影位移(E1底部 → E2顶部)
+ // 计算通孔全高度的投影位移(E1底部 ?E2顶部?
double fullDx = e2cx - e1cx;
double fullDy = e2cy - e1cy;
double fullDistance = Math.Sqrt(fullDx * fullDx + fullDy * fullDy);
- // 计算填锡高度的投影位移(E3起点 → E4终点)
+ // 计算填锡高度的投影位移(E3起点 ?E4终点?
double fillDx = e4cx - e3cx;
double fillDy = e4cy - e3cy;
double fillDistance = Math.Sqrt(fillDx * fillDx + fillDy * fillDy);
- // 填锡率 = 填锡位移 / 全高度位移
+ // 填锡?= 填锡位移 / 全高度位?
double fillRate = fullDistance > 0 ? (fillDistance / fullDistance) * 100.0 : 0;
fillRate = Math.Clamp(fillRate, 0, 100);
@@ -130,4 +130,4 @@ public class FillRateProcessor : ImageProcessorBase
return inputImage.Clone();
}
-}
+}
\ No newline at end of file
diff --git a/ImageProcessing.Processors/检测分析/LineMeasurementProcessor.cs b/XP.ImageProcessing.Processors/检测分析/LineMeasurementProcessor.cs
similarity index 89%
rename from ImageProcessing.Processors/检测分析/LineMeasurementProcessor.cs
rename to XP.ImageProcessing.Processors/检测分析/LineMeasurementProcessor.cs
index e681620..d8e2a66 100644
--- a/ImageProcessing.Processors/检测分析/LineMeasurementProcessor.cs
+++ b/XP.ImageProcessing.Processors/检测分析/LineMeasurementProcessor.cs
@@ -1,28 +1,27 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: LineMeasurementProcessor.cs
-// 描述: 直线测量算子,用于测量图像中两点之间的距离
+// 文件? LineMeasurementProcessor.cs
+// 描述: 直线测量算子,用于测量图像中两点之间的距?
// 功能:
-// - 用户指定两个点坐标(像素坐标)
-// - 计算两点之间的欧氏距离(像素单位)
-// - 支持像素尺寸标定,输出实际物理距离
+// - 用户指定两个点坐标(像素坐标?
+// - 计算两点之间的欧氏距离(像素单位?
+// - 支持像素尺寸标定,输出实际物理距?
// - 在图像上绘制测量线和标注
-// - 输出测量结果供后续处理使用
+// - 输出测量结果供后续处理使?
// 算法: 欧氏距离计算
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
-using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 直线测量算子 - 测量两点之间的距离
+/// 直线测量算子 - 测量两点之间的距?
///
public class LineMeasurementProcessor : ImageProcessorBase
{
@@ -41,28 +40,28 @@ public class LineMeasurementProcessor : ImageProcessorBase
LocalizationHelper.GetString("LineMeasurementProcessor_X1"),
typeof(int), 100, null, null,
LocalizationHelper.GetString("LineMeasurementProcessor_X1_Desc"))
- { IsVisible = false });
+ { IsVisible = false });
Parameters.Add("Y1", new ProcessorParameter(
"Y1",
LocalizationHelper.GetString("LineMeasurementProcessor_Y1"),
typeof(int), 100, null, null,
LocalizationHelper.GetString("LineMeasurementProcessor_Y1_Desc"))
- { IsVisible = false });
+ { IsVisible = false });
Parameters.Add("X2", new ProcessorParameter(
"X2",
LocalizationHelper.GetString("LineMeasurementProcessor_X2"),
typeof(int), 400, null, null,
LocalizationHelper.GetString("LineMeasurementProcessor_X2_Desc"))
- { IsVisible = false });
+ { IsVisible = false });
Parameters.Add("Y2", new ProcessorParameter(
"Y2",
LocalizationHelper.GetString("LineMeasurementProcessor_Y2"),
typeof(int), 400, null, null,
LocalizationHelper.GetString("LineMeasurementProcessor_Y2_Desc"))
- { IsVisible = false });
+ { IsVisible = false });
Parameters.Add("PixelSize", new ProcessorParameter(
"PixelSize",
@@ -120,7 +119,7 @@ public class LineMeasurementProcessor : ImageProcessorBase
// 计算实际距离
double actualDistance = pixelDistance * pixelSize;
- // 计算角度(相对于水平方向)
+ // 计算角度(相对于水平方向?
double angleRad = Math.Atan2(dy, dx);
double angleDeg = angleRad * 180.0 / Math.PI;
@@ -147,4 +146,4 @@ public class LineMeasurementProcessor : ImageProcessorBase
return inputImage.Clone();
}
-}
+}
\ No newline at end of file
diff --git a/ImageProcessing.Processors/检测分析/PointToLineProcessor.cs b/XP.ImageProcessing.Processors/检测分析/PointToLineProcessor.cs
similarity index 93%
rename from ImageProcessing.Processors/检测分析/PointToLineProcessor.cs
rename to XP.ImageProcessing.Processors/检测分析/PointToLineProcessor.cs
index 6dbd43a..124ebe9 100644
--- a/ImageProcessing.Processors/检测分析/PointToLineProcessor.cs
+++ b/XP.ImageProcessing.Processors/检测分析/PointToLineProcessor.cs
@@ -1,24 +1,23 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: PointToLineProcessor.cs
+// 文件? PointToLineProcessor.cs
// 描述: 点到直线距离测量算子
// 功能:
// - 用户定义一条直线(两个端点)和一个测量点
-// - 计算测量点到直线的垂直距离
+// - 计算测量点到直线的垂直距?
// - 支持像素尺寸标定输出物理距离
// - 在图像上绘制直线、测量点、垂足和距离标注
// 算法: 点到直线距离公式
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
-using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
public class PointToLineProcessor : ImageProcessorBase
{
@@ -32,7 +31,7 @@ public class PointToLineProcessor : ImageProcessorBase
protected override void InitializeParameters()
{
- // 直线两端点 + 测量点(由交互控件注入)
+ // 直线两端?+ 测量点(由交互控件注入)
Parameters.Add("L1X", new ProcessorParameter("L1X", "L1X", typeof(int), 100, null, null, "") { IsVisible = false });
Parameters.Add("L1Y", new ProcessorParameter("L1Y", "L1Y", typeof(int), 200, null, null, "") { IsVisible = false });
Parameters.Add("L2X", new ProcessorParameter("L2X", "L2X", typeof(int), 400, null, null, "") { IsVisible = false });
@@ -80,7 +79,7 @@ public class PointToLineProcessor : ImageProcessorBase
if (abLen > 0.001)
{
- // 叉积求距离
+ // 叉积求距?
double cross = Math.Abs(abx * (l1y - py) - aby * (l1x - px));
pixelDistance = cross / abLen;
@@ -113,4 +112,4 @@ public class PointToLineProcessor : ImageProcessorBase
return inputImage.Clone();
}
-}
+}
\ No newline at end of file
diff --git a/ImageProcessing.Processors/检测分析/VoidMeasurementProcessor.cs b/XP.ImageProcessing.Processors/检测分析/VoidMeasurementProcessor.cs
similarity index 95%
rename from ImageProcessing.Processors/检测分析/VoidMeasurementProcessor.cs
rename to XP.ImageProcessing.Processors/检测分析/VoidMeasurementProcessor.cs
index 09c3aa2..7598007 100644
--- a/ImageProcessing.Processors/检测分析/VoidMeasurementProcessor.cs
+++ b/XP.ImageProcessing.Processors/检测分析/VoidMeasurementProcessor.cs
@@ -1,24 +1,24 @@
// ============================================================================
-// 文件名: VoidMeasurementProcessor.cs
+// 文件? VoidMeasurementProcessor.cs
// 描述: 空隙测量算子
//
// 处理流程:
// 1. 构建多边形ROI掩码,计算ROI面积
-// 2. 在ROI内进行双阈值分割提取气泡区域
+// 2. 在ROI内进行双阈值分割提取气泡区?
// 3. 形态学膨胀合并相邻气泡
// 4. 轮廓检测,计算每个气泡面积
-// 5. 计算空隙率 = 总气泡面积 / ROI面积
+// 5. 计算空隙?= 总气泡面?/ ROI面积
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using Emgu.CV.Util;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
public class VoidMeasurementProcessor : ImageProcessorBase
{
@@ -32,7 +32,7 @@ public class VoidMeasurementProcessor : ImageProcessorBase
protected override void InitializeParameters()
{
- // ── 多边形ROI(由UI注入,最多32个点) ──
+ // ── 多边形ROI(由UI注入,最?2个点?──
Parameters.Add("PolyCount", new ProcessorParameter("PolyCount", "PolyCount", typeof(int), 0, null, null, "") { IsVisible = false });
for (int i = 0; i < 32; i++)
{
@@ -40,7 +40,7 @@ public class VoidMeasurementProcessor : ImageProcessorBase
Parameters.Add($"PolyY{i}", new ProcessorParameter($"PolyY{i}", $"PolyY{i}", typeof(int), 0, null, null, "") { IsVisible = false });
}
- // ── 气泡检测参数 ──
+ // ── 气泡检测参?──
Parameters.Add("MinThreshold", new ProcessorParameter(
"MinThreshold",
LocalizationHelper.GetString("VoidMeasurementProcessor_MinThreshold"),
@@ -109,7 +109,7 @@ public class VoidMeasurementProcessor : ImageProcessorBase
}
else
{
- // 无ROI时使用全图
+ // 无ROI时使用全?
roiMask = new Image(w, h);
roiMask.SetValue(new Gray(255));
}
@@ -152,7 +152,7 @@ public class VoidMeasurementProcessor : ImageProcessorBase
CvInvoke.BitwiseAnd(voidImg, roiMask, voidImg);
}
- // ── 轮廓检测 ──
+ // ── 轮廓检?──
using var contours = new VectorOfVectorOfPoint();
using var hierarchy = new Mat();
CvInvoke.FindContours(voidImg, contours, hierarchy, RetrType.External, ChainApproxMethod.ChainApproxSimple);
@@ -183,7 +183,7 @@ public class VoidMeasurementProcessor : ImageProcessorBase
});
}
- // 按面积从大到小排序
+ // 按面积从大到小排?
voids.Sort((a, b) => b.Area.CompareTo(a.Area));
for (int i = 0; i < voids.Count; i++) voids[i].Index = i + 1;
@@ -227,4 +227,4 @@ public class VoidRegionInfo
public double AreaPercent { get; set; }
public Rectangle BoundingBox { get; set; }
public Point[] ContourPoints { get; set; } = Array.Empty();
-}
+}
\ No newline at end of file
diff --git a/ImageProcessing.Processors/滤波处理/BandPassFilterProcessor.cs b/XP.ImageProcessing.Processors/滤波处理/BandPassFilterProcessor.cs
similarity index 96%
rename from ImageProcessing.Processors/滤波处理/BandPassFilterProcessor.cs
rename to XP.ImageProcessing.Processors/滤波处理/BandPassFilterProcessor.cs
index d902cb9..97feb58 100644
--- a/ImageProcessing.Processors/滤波处理/BandPassFilterProcessor.cs
+++ b/XP.ImageProcessing.Processors/滤波处理/BandPassFilterProcessor.cs
@@ -1,24 +1,24 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: BandPassFilterProcessor.cs
-// 描述: 带通滤波器算子,用于频域图像处理
+// 文件? BandPassFilterProcessor.cs
+// 描述: 带通滤波器算子,用于频域图像处?
// 功能:
-// - 在频域中保留特定频率范围的信号
+// - 在频域中保留特定频率范围的信?
// - 支持理想、巴特沃斯、高斯三种滤波器类型
// - 可调节低频和高频截止频率
// - 通过FFT实现频域滤波
// 算法: 基于离散傅里叶变换(DFT)的频域滤波
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 带通滤波器算子
diff --git a/ImageProcessing.Processors/滤波处理/BilateralFilterProcessor.cs b/XP.ImageProcessing.Processors/滤波处理/BilateralFilterProcessor.cs
similarity index 90%
rename from ImageProcessing.Processors/滤波处理/BilateralFilterProcessor.cs
rename to XP.ImageProcessing.Processors/滤波处理/BilateralFilterProcessor.cs
index 0c5ca2a..dfcd2ba 100644
--- a/ImageProcessing.Processors/滤波处理/BilateralFilterProcessor.cs
+++ b/XP.ImageProcessing.Processors/滤波处理/BilateralFilterProcessor.cs
@@ -1,21 +1,21 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: BilateralFilterProcessor.cs
-// 描述: 双边滤波算子,用于保边降噪
+// 文件? BilateralFilterProcessor.cs
+// 描述: 双边滤波算子,用于保边降?
// 功能:
// - 双边滤波
-// - 保持边缘清晰的同时平滑图像
+// - 保持边缘清晰的同时平滑图?
// - 可调节核大小和标准差
// 算法: 双边滤波
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 双边滤波算子
diff --git a/ImageProcessing.Processors/滤波处理/GaussianBlurProcessor.cs b/XP.ImageProcessing.Processors/滤波处理/GaussianBlurProcessor.cs
similarity index 91%
rename from ImageProcessing.Processors/滤波处理/GaussianBlurProcessor.cs
rename to XP.ImageProcessing.Processors/滤波处理/GaussianBlurProcessor.cs
index 1e2540e..2010848 100644
--- a/ImageProcessing.Processors/滤波处理/GaussianBlurProcessor.cs
+++ b/XP.ImageProcessing.Processors/滤波处理/GaussianBlurProcessor.cs
@@ -1,22 +1,22 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: GaussianBlurProcessor.cs
+// 文件? GaussianBlurProcessor.cs
// 描述: 高斯模糊算子,用于图像平滑和降噪
// 功能:
-// - 高斯核卷积平滑
+// - 高斯核卷积平?
// - 可调节核大小和标准差
// - 有效去除高斯噪声
// - 保持边缘相对清晰
-// 算法: 高斯滤波器卷积
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 算法: 高斯滤波器卷?
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 高斯模糊算子
diff --git a/ImageProcessing.Processors/滤波处理/HighPassFilterProcessor.cs b/XP.ImageProcessing.Processors/滤波处理/HighPassFilterProcessor.cs
similarity index 93%
rename from ImageProcessing.Processors/滤波处理/HighPassFilterProcessor.cs
rename to XP.ImageProcessing.Processors/滤波处理/HighPassFilterProcessor.cs
index 172cfd2..0a99ab9 100644
--- a/ImageProcessing.Processors/滤波处理/HighPassFilterProcessor.cs
+++ b/XP.ImageProcessing.Processors/滤波处理/HighPassFilterProcessor.cs
@@ -1,26 +1,26 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: HighPassFilterProcessor.cs
+// 文件? HighPassFilterProcessor.cs
// 描述: 高通滤波算子,用于边缘增强
// 功能:
-// - 高通滤波(频域)
+// - 高通滤波(频域?
// - 边缘增强
// - 去除低频信息
-// - 可调节截止频率
+// - 可调节截止频?
// 算法: 高斯高通滤波器(频域)
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 高通滤波算子
+/// 高通滤波算?
///
public class HighPassFilterProcessor : ImageProcessorBase
{
@@ -69,7 +69,7 @@ public class HighPassFilterProcessor : ImageProcessorBase
Mat dftImage = new Mat();
CvInvoke.Dft(complexImage, dftImage, DxtType.Forward);
- // 分离实部和虚部
+ // 分离实部和虚?
using (var dftPlanes = new Emgu.CV.Util.VectorOfMat())
{
CvInvoke.Split(dftImage, dftPlanes);
@@ -80,7 +80,7 @@ public class HighPassFilterProcessor : ImageProcessorBase
// 创建高通滤波器
Mat filter = CreateHighPassFilter(rows, cols, cutoffFrequency);
- // 应用滤波器
+ // 应用滤波?
CvInvoke.Multiply(real, filter, real);
CvInvoke.Multiply(imag, filter, imag);
diff --git a/ImageProcessing.Processors/滤波处理/LowPassFilterProcessor.cs b/XP.ImageProcessing.Processors/滤波处理/LowPassFilterProcessor.cs
similarity index 93%
rename from ImageProcessing.Processors/滤波处理/LowPassFilterProcessor.cs
rename to XP.ImageProcessing.Processors/滤波处理/LowPassFilterProcessor.cs
index 89d0159..8f4821b 100644
--- a/ImageProcessing.Processors/滤波处理/LowPassFilterProcessor.cs
+++ b/XP.ImageProcessing.Processors/滤波处理/LowPassFilterProcessor.cs
@@ -1,26 +1,26 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: LowPassFilterProcessor.cs
+// 文件? LowPassFilterProcessor.cs
// 描述: 低通滤波算子,用于去除高频噪声
// 功能:
-// - 低通滤波(频域)
+// - 低通滤波(频域?
// - 去除高频噪声
// - 平滑图像
-// - 可调节截止频率
+// - 可调节截止频?
// 算法: 高斯低通滤波器(频域)
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 低通滤波算子
+/// 低通滤波算?
///
public class LowPassFilterProcessor : ImageProcessorBase
{
@@ -69,7 +69,7 @@ public class LowPassFilterProcessor : ImageProcessorBase
Mat dftImage = new Mat();
CvInvoke.Dft(complexImage, dftImage, DxtType.Forward);
- // 分离实部和虚部
+ // 分离实部和虚?
using (var dftPlanes = new Emgu.CV.Util.VectorOfMat())
{
CvInvoke.Split(dftImage, dftPlanes);
@@ -80,7 +80,7 @@ public class LowPassFilterProcessor : ImageProcessorBase
// 创建低通滤波器
Mat filter = CreateLowPassFilter(rows, cols, cutoffFrequency);
- // 应用滤波器
+ // 应用滤波?
CvInvoke.Multiply(real, filter, real);
CvInvoke.Multiply(imag, filter, imag);
diff --git a/ImageProcessing.Processors/滤波处理/MeanFilterProcessor.cs b/XP.ImageProcessing.Processors/滤波处理/MeanFilterProcessor.cs
similarity index 88%
rename from ImageProcessing.Processors/滤波处理/MeanFilterProcessor.cs
rename to XP.ImageProcessing.Processors/滤波处理/MeanFilterProcessor.cs
index 49d68f6..46effa1 100644
--- a/ImageProcessing.Processors/滤波处理/MeanFilterProcessor.cs
+++ b/XP.ImageProcessing.Processors/滤波处理/MeanFilterProcessor.cs
@@ -1,25 +1,25 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: MeanFilterProcessor.cs
+// 文件? MeanFilterProcessor.cs
// 描述: 均值滤波算子,用于图像平滑
// 功能:
-// - 均值滤波
+// - 均值滤?
// - 简单快速的平滑方法
// - 可调节核大小
-// 算法: 均值滤波
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 算法: 均值滤?
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
using System.Drawing;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 均值滤波算子
+/// 均值滤波算?
///
public class MeanFilterProcessor : ImageProcessorBase
{
diff --git a/ImageProcessing.Processors/滤波处理/MedianFilterProcessor.cs b/XP.ImageProcessing.Processors/滤波处理/MedianFilterProcessor.cs
similarity index 88%
rename from ImageProcessing.Processors/滤波处理/MedianFilterProcessor.cs
rename to XP.ImageProcessing.Processors/滤波处理/MedianFilterProcessor.cs
index b3ddf0e..d9bf276 100644
--- a/ImageProcessing.Processors/滤波处理/MedianFilterProcessor.cs
+++ b/XP.ImageProcessing.Processors/滤波处理/MedianFilterProcessor.cs
@@ -1,25 +1,25 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: MedianFilterProcessor.cs
+// 文件? MedianFilterProcessor.cs
// 描述: 中值滤波算子,用于去除椒盐噪声
// 功能:
-// - 中值滤波
+// - 中值滤?
// - 有效去除椒盐噪声
// - 保持边缘清晰
// - 可调节核大小
-// 算法: 中值滤波
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 算法: 中值滤?
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 中值滤波算子
+/// 中值滤波算?
///
public class MedianFilterProcessor : ImageProcessorBase
{
diff --git a/ImageProcessing.Processors/滤波处理/ShockFilterProcessor.cs b/XP.ImageProcessing.Processors/滤波处理/ShockFilterProcessor.cs
similarity index 95%
rename from ImageProcessing.Processors/滤波处理/ShockFilterProcessor.cs
rename to XP.ImageProcessing.Processors/滤波处理/ShockFilterProcessor.cs
index c692dd2..7ac952c 100644
--- a/ImageProcessing.Processors/滤波处理/ShockFilterProcessor.cs
+++ b/XP.ImageProcessing.Processors/滤波处理/ShockFilterProcessor.cs
@@ -1,22 +1,22 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: ShockFilterProcessor.cs
+// 文件? ShockFilterProcessor.cs
// 描述: 冲击滤波算子,用于图像锐化和边缘增强
// 功能:
-// - 基于PDE的图像锐化
+// - 基于PDE的图像锐?
// - 增强边缘同时保持平滑区域
// - 可调节迭代次数和滤波强度
// - 适用于模糊图像的恢复
// 算法: 冲击滤波器(Shock Filter)基于偏微分方程
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
/// 冲击滤波算子
diff --git a/ImageProcessing.Processors/边缘检测/HorizontalEdgeProcessor.cs b/XP.ImageProcessing.Processors/边缘检测/HorizontalEdgeProcessor.cs
similarity index 92%
rename from ImageProcessing.Processors/边缘检测/HorizontalEdgeProcessor.cs
rename to XP.ImageProcessing.Processors/边缘检测/HorizontalEdgeProcessor.cs
index 4d7485d..a4292ce 100644
--- a/ImageProcessing.Processors/边缘检测/HorizontalEdgeProcessor.cs
+++ b/XP.ImageProcessing.Processors/边缘检测/HorizontalEdgeProcessor.cs
@@ -1,26 +1,26 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: HorizontalEdgeProcessor.cs
+// 文件? HorizontalEdgeProcessor.cs
// 描述: 水平边缘检测算子,专门用于检测水平方向的边缘
// 功能:
-// - 检测水平边缘
+// - 检测水平边?
// - 支持Prewitt和Sobel算子
// - 可调节检测灵敏度
// - 适用于检测水平线条和纹理
// 算法: Prewitt/Sobel水平算子
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// 水平边缘检测算子
+/// 水平边缘检测算?
///
public class HorizontalEdgeProcessor : ImageProcessorBase
{
@@ -92,15 +92,15 @@ public class HorizontalEdgeProcessor : ImageProcessorBase
private Image ApplySobel(Image inputImage, double sensitivity, int threshold)
{
- // 使用Sobel算子检测水平边缘(Y方向导数)
+ // 使用Sobel算子检测水平边缘(Y方向导数?
Image sobelY = new Image(inputImage.Size);
CvInvoke.Sobel(inputImage, sobelY, DepthType.Cv32F, 0, 1, 3);
- // 转换为绝对值并应用灵敏度
+ // 转换为绝对值并应用灵敏?
Image result = new Image(inputImage.Size);
CvInvoke.ConvertScaleAbs(sobelY, result, sensitivity, 0);
- // 应用阈值
+ // 应用阈?
if (threshold > 0)
{
CvInvoke.Threshold(result, result, threshold, 255, ThresholdType.Binary);
@@ -141,10 +141,10 @@ public class HorizontalEdgeProcessor : ImageProcessorBase
sum -= inputData[y + 1, x, 0];
sum -= inputData[y + 1, x + 1, 0];
- // 取绝对值并应用灵敏度
+ // 取绝对值并应用灵敏?
int value = (int)(Math.Abs(sum) * sensitivity);
- // 应用阈值
+ // 应用阈?
if (value > threshold)
{
outputData[y, x, 0] = (byte)Math.Min(255, value);
@@ -161,11 +161,11 @@ public class HorizontalEdgeProcessor : ImageProcessorBase
private Image ApplySimple(Image inputImage, double sensitivity, int threshold)
{
- // 简单差分算子
+ // 简单差分算?
// [ 1 1 1]
// [ 0 0 0]
// [-1 -1 -1]
- // 但权重更简单
+ // 但权重更简?
int width = inputImage.Width;
int height = inputImage.Height;
@@ -182,7 +182,7 @@ public class HorizontalEdgeProcessor : ImageProcessorBase
int diff = inputData[y - 1, x, 0] - inputData[y + 1, x, 0];
int value = (int)(Math.Abs(diff) * sensitivity);
- // 应用阈值
+ // 应用阈?
if (value > threshold)
{
outputData[y, x, 0] = (byte)Math.Min(255, value);
diff --git a/ImageProcessing.Processors/边缘检测/KirschEdgeProcessor.cs b/XP.ImageProcessing.Processors/边缘检测/KirschEdgeProcessor.cs
similarity index 87%
rename from ImageProcessing.Processors/边缘检测/KirschEdgeProcessor.cs
rename to XP.ImageProcessing.Processors/边缘检测/KirschEdgeProcessor.cs
index 8f1b24d..e4e185e 100644
--- a/ImageProcessing.Processors/边缘检测/KirschEdgeProcessor.cs
+++ b/XP.ImageProcessing.Processors/边缘检测/KirschEdgeProcessor.cs
@@ -1,31 +1,31 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: KirschEdgeProcessor.cs
-// 描述: Kirsch边缘检测算子,用于检测图像边缘
+// 文件? KirschEdgeProcessor.cs
+// 描述: Kirsch边缘检测算子,用于检测图像边?
// 功能:
-// - Kirsch算子边缘检测
-// - 8个方向的边缘检测
+// - Kirsch算子边缘检?
+// - 8个方向的边缘检?
// - 输出最大响应方向的边缘
-// - 对噪声敏感度低
-// 算法: Kirsch算子(8方向模板)
-// 作者: 李伟 wei.lw.li@hexagon.com
+// - 对噪声敏感度?
+// 算法: Kirsch算子?方向模板?
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// Kirsch边缘检测算子
+/// Kirsch边缘检测算?
///
public class KirschEdgeProcessor : ImageProcessorBase
{
private static readonly ILogger _logger = Log.ForContext();
- // Kirsch算子的8个方向模板
+ // Kirsch算子?个方向模?
private static readonly int[][,] KirschKernels = new int[8][,]
{
// N
@@ -86,14 +86,14 @@ public class KirschEdgeProcessor : ImageProcessorBase
Image result = new Image(width, height);
byte[,,] outputData = result.Data;
- // 对每个像素应用8个Kirsch模板,取最大响应
+ // 对每个像素应?个Kirsch模板,取最大响?
for (int y = 1; y < height - 1; y++)
{
for (int x = 1; x < width - 1; x++)
{
int maxResponse = 0;
- // 对8个方向分别计算
+ // ?个方向分别计?
for (int k = 0; k < 8; k++)
{
int sum = 0;
@@ -106,7 +106,7 @@ public class KirschEdgeProcessor : ImageProcessorBase
}
}
- // 取绝对值
+ // 取绝对?
sum = Math.Abs(sum);
if (sum > maxResponse)
{
diff --git a/ImageProcessing.Processors/边缘检测/SobelEdgeProcessor.cs b/XP.ImageProcessing.Processors/边缘检测/SobelEdgeProcessor.cs
similarity index 91%
rename from ImageProcessing.Processors/边缘检测/SobelEdgeProcessor.cs
rename to XP.ImageProcessing.Processors/边缘检测/SobelEdgeProcessor.cs
index 8e49386..b7f5764 100644
--- a/ImageProcessing.Processors/边缘检测/SobelEdgeProcessor.cs
+++ b/XP.ImageProcessing.Processors/边缘检测/SobelEdgeProcessor.cs
@@ -1,26 +1,26 @@
// ============================================================================
// Copyright © 2026 Hexagon Technology Center GmbH. All Rights Reserved.
-// 文件名: SobelEdgeProcessor.cs
-// 描述: Sobel边缘检测算子,用于检测图像边缘
+// 文件? SobelEdgeProcessor.cs
+// 描述: Sobel边缘检测算子,用于检测图像边?
// 功能:
-// - Sobel算子边缘检测
-// - 支持X方向、Y方向和组合检测
+// - Sobel算子边缘检?
+// - 支持X方向、Y方向和组合检?
// - 可调节核大小
-// - 输出边缘强度图
+// - 输出边缘强度?
// 算法: Sobel算子
-// 作者: 李伟 wei.lw.li@hexagon.com
+// 作? 李伟 wei.lw.li@hexagon.com
// ============================================================================
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
-using ImageProcessing.Core;
using Serilog;
+using XP.ImageProcessing.Core;
-namespace ImageProcessing.Processors;
+namespace XP.ImageProcessing.Processors;
///
-/// Sobel边缘检测算子
+/// Sobel边缘检测算?
///
public class SobelEdgeProcessor : ImageProcessorBase
{
@@ -96,7 +96,7 @@ public class SobelEdgeProcessor : ImageProcessorBase
// 计算梯度幅值:sqrt(Gx^2 + Gy^2)
Image magnitude = new Image(inputImage.Size);
- // 手动计算幅值
+ // 手动计算幅?
for (int y = 0; y < inputImage.Height; y++)
{
for (int x = 0; x < inputImage.Width; x++)
diff --git a/ImageROIControl/ControlThumb.cs b/XP.ImageProcessing.RoiControl/ControlThumb.cs
similarity index 80%
rename from ImageROIControl/ControlThumb.cs
rename to XP.ImageProcessing.RoiControl/ControlThumb.cs
index 36abc49..d9a7b92 100644
--- a/ImageROIControl/ControlThumb.cs
+++ b/XP.ImageProcessing.RoiControl/ControlThumb.cs
@@ -2,10 +2,10 @@ using System;
using System.Windows;
using System.Windows.Controls.Primitives;
-namespace ImageROIControl
+namespace XP.ImageProcessing.RoiControl
{
///
- /// ROI控制点
+ /// ROI控制�?
///
public class ControlThumb : Thumb
{
@@ -16,12 +16,12 @@ namespace ImageROIControl
try
{
ResourceDictionary dictionary = new ResourceDictionary();
- dictionary.Source = new Uri("pack://application:,,,/ImageROIControl;component/Themes/Generic.xaml", UriKind.Absolute);
+ dictionary.Source = new Uri("pack://application:,,,/XP.ImageProcessing.RoiControl;component/Themes/Generic.xaml", UriKind.Absolute);
thumbStyle = (Style?)dictionary["AreaControlThumbStyle"];
}
catch
{
- // 如果样式加载失败,使用默认样式
+ // 如果样式加载失败,使用默认样�?
thumbStyle = null;
}
}
diff --git a/ImageROIControl/Controls/ImageROICanvas.cs b/XP.ImageProcessing.RoiControl/Controls/ImageROICanvas.cs
similarity index 98%
rename from ImageROIControl/Controls/ImageROICanvas.cs
rename to XP.ImageProcessing.RoiControl/Controls/ImageROICanvas.cs
index c33354c..f313539 100644
--- a/ImageROIControl/Controls/ImageROICanvas.cs
+++ b/XP.ImageProcessing.RoiControl/Controls/ImageROICanvas.cs
@@ -1,12 +1,12 @@
-using ImageROIControl.Models;
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
+using XP.ImageProcessing.RoiControl.Models;
-namespace ImageROIControl.Controls
+namespace XP.ImageProcessing.RoiControl.Controls
{
///
/// 图像ROI画布控件,支持图像显示、ROI编辑、缩放和平移
diff --git a/ImageROIControl/Controls/PolygonRoiCanvas.xaml b/XP.ImageProcessing.RoiControl/Controls/PolygonRoiCanvas.xaml
similarity index 93%
rename from ImageROIControl/Controls/PolygonRoiCanvas.xaml
rename to XP.ImageProcessing.RoiControl/Controls/PolygonRoiCanvas.xaml
index 9be318d..409d5d4 100644
--- a/ImageROIControl/Controls/PolygonRoiCanvas.xaml
+++ b/XP.ImageProcessing.RoiControl/Controls/PolygonRoiCanvas.xaml
@@ -1,12 +1,12 @@
-
{
UpdateAdorner();
@@ -219,7 +219,7 @@ namespace ImageROIControl.Controls
{
var control = (PolygonRoiCanvas)d;
- // 更新IsSelected状态
+ // 更新IsSelected状�?
if (e.OldValue is ROIShape oldROI)
{
oldROI.IsSelected = false;
@@ -288,7 +288,7 @@ namespace ImageROIControl.Controls
// 尝试获取容器
var container = itemsControl.ItemContainerGenerator.ContainerFromIndex(i) as ContentPresenter;
- // 如果容器还没生成,尝试强制生成
+ // 如果容器还没生成,尝试强制生�?
if (container == null)
{
// 强制生成容器
@@ -298,7 +298,7 @@ namespace ImageROIControl.Controls
if (container != null)
{
- // 查找实际的形状元素(只支持多边形)
+ // 查找实际的形状元素(只支持多边形�?
if (roi is PolygonROI)
{
return FindVisualChild(container);
@@ -334,10 +334,10 @@ namespace ImageROIControl.Controls
private void Canvas_MouseWheel(object sender, MouseWheelEventArgs e)
{
- // 获取鼠标在 imageDisplayGrid 中的位置
+ // 获取鼠标�?imageDisplayGrid 中的位置
Point mousePos = e.GetPosition(imageDisplayGrid);
- // 获取鼠标在 Canvas 中的位置(缩放前)
+ // 获取鼠标�?Canvas 中的位置(缩放前�?
Point mousePosOnCanvas = e.GetPosition(mainCanvas);
double oldZoom = ZoomScale;
@@ -364,7 +364,7 @@ namespace ImageROIControl.Controls
ZoomScale = newZoom;
// 调整平移偏移,使鼠标位置保持不变
- // 新的偏移 = 旧偏移 + 鼠标位置 - 鼠标位置 * 缩放比例
+ // 新的偏移 = 旧偏�?+ 鼠标位置 - 鼠标位置 * 缩放比例
PanOffsetX = mousePos.X - (mousePos.X - PanOffsetX) * scale;
PanOffsetY = mousePos.Y - (mousePos.Y - PanOffsetY) * scale;
}
@@ -412,7 +412,7 @@ namespace ImageROIControl.Controls
private void Canvas_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
- // 右键点击完成多边形
+ // 右键点击完成多边�?
OnRightClick();
e.Handled = true;
}
@@ -440,10 +440,10 @@ namespace ImageROIControl.Controls
if (imageDisplayGrid != null && CanvasWidth > 0 && CanvasHeight > 0)
{
- // 使用 Dispatcher 延迟执行,确保布局已完成
+ // 使用 Dispatcher 延迟执行,确保布局已完�?
Dispatcher.BeginInvoke(new Action(() =>
{
- // 获取图像显示区域的实际尺寸
+ // 获取图像显示区域的实际尺�?
double viewportWidth = imageDisplayGrid.ActualWidth;
double viewportHeight = imageDisplayGrid.ActualHeight;
@@ -453,10 +453,10 @@ namespace ImageROIControl.Controls
double scaleX = viewportWidth / CanvasWidth;
double scaleY = viewportHeight / CanvasHeight;
- // 选择较小的缩放比例,确保图像完全显示在窗口内(保持宽高比)
+ // 选择较小的缩放比例,确保图像完全显示在窗口内(保持宽高比�?
ZoomScale = Math.Min(scaleX, scaleY);
- // 居中显示由 Grid 的 HorizontalAlignment 和 VerticalAlignment 自动处理
+ // 居中显示�?Grid �?HorizontalAlignment �?VerticalAlignment 自动处理
PanOffsetX = 0;
PanOffsetY = 0;
}
diff --git a/ImageROIControl/Models/ROIShape.cs b/XP.ImageProcessing.RoiControl/Models/ROIShape.cs
similarity index 97%
rename from ImageROIControl/Models/ROIShape.cs
rename to XP.ImageProcessing.RoiControl/Models/ROIShape.cs
index ee9fff8..4ca8789 100644
--- a/ImageROIControl/Models/ROIShape.cs
+++ b/XP.ImageProcessing.RoiControl/Models/ROIShape.cs
@@ -5,7 +5,7 @@ using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows;
-namespace ImageROIControl.Models
+namespace XP.ImageProcessing.RoiControl.Models
{
///
/// ROI形状类型
@@ -68,7 +68,7 @@ namespace ImageROIControl.Models
}
///
- /// 用于JSON序列化的Points列表(不参与UI绑定)
+ /// 用于JSON序列化的Points列表(不参与UI绑定�?
///
[System.Text.Json.Serialization.JsonPropertyName("PointsList")]
public List PointsList
diff --git a/ImageROIControl/PointListConverter.cs b/XP.ImageProcessing.RoiControl/PointListConverter.cs
similarity index 96%
rename from ImageROIControl/PointListConverter.cs
rename to XP.ImageProcessing.RoiControl/PointListConverter.cs
index 4f7960f..c8ae3aa 100644
--- a/ImageROIControl/PointListConverter.cs
+++ b/XP.ImageProcessing.RoiControl/PointListConverter.cs
@@ -6,7 +6,7 @@ using System.Windows;
using System.Windows.Data;
using System.Windows.Media;
-namespace ImageROIControl
+namespace XP.ImageProcessing.RoiControl
{
///
/// 将Point列表转换为PointCollection,支持ObservableCollection变化通知
@@ -47,7 +47,7 @@ namespace ImageROIControl
}
///
- /// 索引转换为位置标签
+ /// 索引转换为位置标�?
///
public class IndexToPositionConverter : IValueConverter
{
diff --git a/ImageROIControl/PolygonAdorner.cs b/XP.ImageProcessing.RoiControl/PolygonAdorner.cs
similarity index 95%
rename from ImageROIControl/PolygonAdorner.cs
rename to XP.ImageProcessing.RoiControl/PolygonAdorner.cs
index 9305854..714a9cb 100644
--- a/ImageROIControl/PolygonAdorner.cs
+++ b/XP.ImageProcessing.RoiControl/PolygonAdorner.cs
@@ -6,14 +6,14 @@ using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Shapes;
-namespace ImageROIControl
+namespace XP.ImageProcessing.RoiControl
{
///
/// 多边形装饰器,用于编辑多边形顶点
///
public class PolygonAdorner : Adorner
{
- private List vertexThumbs = new List(); // 顶点控制点
+ private List vertexThumbs = new List(); // 顶点控制�?
private VisualCollection visualChildren;
private double scaleFactor = 1;
private Models.PolygonROI? polygonROI;
@@ -28,7 +28,7 @@ namespace ImageROIControl
// 使用ROI模型的Points数量而不是Polygon的Points
int pointCount = polygonROI?.Points.Count ?? 0;
- // 创建顶点控制点
+ // 创建顶点控制�?
for (int i = 0; i < pointCount; i++)
{
var thumb = new ControlThumb();
@@ -80,7 +80,7 @@ namespace ImageROIControl
private void HandleRightClick(object sender, MouseButtonEventArgs e)
{
- // 右键删除顶点(至少保留3个顶点)
+ // 右键删除顶点(至少保�?个顶点)
if (polygonROI != null && polygonROI.Points.Count > 3)
{
Thumb? hitThumb = sender as Thumb;
@@ -104,7 +104,7 @@ namespace ImageROIControl
{
double thumbSize = 12 * scaleFactor;
- // 布局顶点控制点
+ // 布局顶点控制�?
for (int i = 0; i < vertexThumbs.Count && i < polygonROI.Points.Count; i++)
{
vertexThumbs[i].Arrange(new Rect(
diff --git a/ImageROIControl/PolygonPointsBehavior.cs b/XP.ImageProcessing.RoiControl/PolygonPointsBehavior.cs
similarity index 97%
rename from ImageROIControl/PolygonPointsBehavior.cs
rename to XP.ImageProcessing.RoiControl/PolygonPointsBehavior.cs
index ee4ef90..ca59b43 100644
--- a/ImageROIControl/PolygonPointsBehavior.cs
+++ b/XP.ImageProcessing.RoiControl/PolygonPointsBehavior.cs
@@ -6,7 +6,7 @@ using System.Windows;
using System.Windows.Media;
using System.Windows.Shapes;
-namespace ImageROIControl
+namespace XP.ImageProcessing.RoiControl
{
///
/// 多边形Points附加行为,支持ObservableCollection绑定
@@ -58,7 +58,7 @@ namespace ImageROIControl
// 保存引用以便后续清理
_attachedCollections[polygon] = newCollection;
- // 监听Polygon卸载事件以清理资源
+ // 监听Polygon卸载事件以清理资�?
polygon.Unloaded += (s, args) =>
{
if (_attachedCollections.TryGetValue(polygon, out var collection))
diff --git a/ImageROIControl/ROISerializer.cs b/XP.ImageProcessing.RoiControl/ROISerializer.cs
similarity index 95%
rename from ImageROIControl/ROISerializer.cs
rename to XP.ImageProcessing.RoiControl/ROISerializer.cs
index 966cb23..52ac6ad 100644
--- a/ImageROIControl/ROISerializer.cs
+++ b/XP.ImageProcessing.RoiControl/ROISerializer.cs
@@ -1,12 +1,12 @@
-using ImageROIControl.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Windows;
+using XP.ImageProcessing.RoiControl.Models;
-namespace ImageROIControl
+namespace XP.ImageProcessing.RoiControl
{
///
/// ROI序列化工具类
@@ -38,7 +38,7 @@ namespace ImageROIControl
}
///
- /// 序列化ROI列表为JSON字符串
+ /// 序列化ROI列表为JSON字符�?
///
public static string Serialize(IEnumerable roiList)
{
@@ -55,7 +55,7 @@ namespace ImageROIControl
}
///
- /// Point类型的JSON转换器
+ /// Point类型的JSON转换�?
///
public class PointConverter : JsonConverter
{
@@ -102,7 +102,7 @@ namespace ImageROIControl
}
///
- /// ROIShape多态类型的JSON转换器
+ /// ROIShape多态类型的JSON转换�?
///
public class ROIShapeConverter : JsonConverter
{
diff --git a/ImageROIControl/ROITypeToVisibilityConverter.cs b/XP.ImageProcessing.RoiControl/ROITypeToVisibilityConverter.cs
similarity index 88%
rename from ImageROIControl/ROITypeToVisibilityConverter.cs
rename to XP.ImageProcessing.RoiControl/ROITypeToVisibilityConverter.cs
index b19b220..7aa8b39 100644
--- a/ImageROIControl/ROITypeToVisibilityConverter.cs
+++ b/XP.ImageProcessing.RoiControl/ROITypeToVisibilityConverter.cs
@@ -1,10 +1,10 @@
-using ImageROIControl.Models;
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
+using XP.ImageProcessing.RoiControl.Models;
-namespace ImageROIControl.Converters
+namespace XP.ImageProcessing.RoiControl.Converters
{
public class ROITypeToVisibilityConverter : IValueConverter
{
diff --git a/ImageROIControl/Themes/Generic.xaml b/XP.ImageProcessing.RoiControl/Themes/Generic.xaml
similarity index 97%
rename from ImageROIControl/Themes/Generic.xaml
rename to XP.ImageProcessing.RoiControl/Themes/Generic.xaml
index f8dc125..1ffabb5 100644
--- a/ImageROIControl/Themes/Generic.xaml
+++ b/XP.ImageProcessing.RoiControl/Themes/Generic.xaml
@@ -1,8 +1,7 @@
-
+ xmlns:local="clr-namespace:XP.ImageProcessing.RoiControl.Controls">
-
@@ -74,7 +73,7 @@
-
+
-
+
@@ -121,7 +120,7 @@
-
+
@@ -167,7 +166,6 @@
MinHeight="200"
ParameterChanged="OnParameterChanged" />
-
@@ -205,6 +203,5 @@
Value="{Binding ProcessingProgress}" />
-
-
+
\ No newline at end of file
diff --git a/XplorePlane/Views/ImageProcessing/ImageProcessingPanelView.xaml.cs b/XplorePlane/Views/ImageProcessing/ImageProcessingPanelView.xaml.cs
index f454a61..b72b23b 100644
--- a/XplorePlane/Views/ImageProcessing/ImageProcessingPanelView.xaml.cs
+++ b/XplorePlane/Views/ImageProcessing/ImageProcessingPanelView.xaml.cs
@@ -1,9 +1,10 @@
+using Prism.Ioc;
using System;
using System.Windows;
using System.Windows.Controls;
-using Prism.Ioc;
using XplorePlane.Services;
using XplorePlane.ViewModels;
+
namespace XplorePlane.Views
{
public partial class ImageProcessingPanelView : UserControl
@@ -51,4 +52,4 @@ namespace XplorePlane.Views
// Nothing extra needed here — ApplyProcessingCommand will pick them up via the service.
}
}
-}
+}
\ No newline at end of file
diff --git a/XplorePlane/Views/ImageProcessing/ImageProcessingWindow.xaml b/XplorePlane/Views/ImageProcessing/ImageProcessingWindow.xaml
index cec64ed..8e144bd 100644
--- a/XplorePlane/Views/ImageProcessing/ImageProcessingWindow.xaml
+++ b/XplorePlane/Views/ImageProcessing/ImageProcessingWindow.xaml
@@ -11,4 +11,4 @@
ShowInTaskbar="False"
WindowStartupLocation="CenterOwner">
-
+
\ No newline at end of file
diff --git a/XplorePlane/Views/ImageProcessing/ImageProcessingWindow.xaml.cs b/XplorePlane/Views/ImageProcessing/ImageProcessingWindow.xaml.cs
index ff57c0d..3dd4fa6 100644
--- a/XplorePlane/Views/ImageProcessing/ImageProcessingWindow.xaml.cs
+++ b/XplorePlane/Views/ImageProcessing/ImageProcessingWindow.xaml.cs
@@ -9,4 +9,4 @@ namespace XplorePlane.Views
InitializeComponent();
}
}
-}
+}
\ No newline at end of file
diff --git a/XplorePlane/Views/ImageProcessing/OperatorToolboxView.xaml b/XplorePlane/Views/ImageProcessing/OperatorToolboxView.xaml
index b640ea9..60fe026 100644
--- a/XplorePlane/Views/ImageProcessing/OperatorToolboxView.xaml
+++ b/XplorePlane/Views/ImageProcessing/OperatorToolboxView.xaml
@@ -10,10 +10,10 @@
d:DesignHeight="600" d:DesignWidth="280">
-
-
-
-
+
+
+
+
Microsoft YaHei UI
@@ -22,9 +22,9 @@
BorderThickness="1" CornerRadius="4">
-
-
-
+
+
+
@@ -32,27 +32,27 @@
+ VerticalAlignment="Center" />
-
+
\ No newline at end of file
diff --git a/XplorePlane/Views/ImageProcessing/OperatorToolboxView.xaml.cs b/XplorePlane/Views/ImageProcessing/OperatorToolboxView.xaml.cs
index 31d7f67..3aeed92 100644
--- a/XplorePlane/Views/ImageProcessing/OperatorToolboxView.xaml.cs
+++ b/XplorePlane/Views/ImageProcessing/OperatorToolboxView.xaml.cs
@@ -1,7 +1,7 @@
+using Prism.Ioc;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
-using Prism.Ioc;
using XP.Common.Logging.Interfaces;
using XplorePlane.ViewModels;
@@ -95,4 +95,4 @@ namespace XplorePlane.Views
}
}
}
-}
+}
\ No newline at end of file
diff --git a/XplorePlane/Views/ImageProcessing/OperatorToolboxWindow.xaml b/XplorePlane/Views/ImageProcessing/OperatorToolboxWindow.xaml
index 519f94c..b9b5d96 100644
--- a/XplorePlane/Views/ImageProcessing/OperatorToolboxWindow.xaml
+++ b/XplorePlane/Views/ImageProcessing/OperatorToolboxWindow.xaml
@@ -12,8 +12,8 @@
ResizeMode="CanResizeWithGrip">
-
+
-
+
\ No newline at end of file
diff --git a/XplorePlane/Views/ImageProcessing/OperatorToolboxWindow.xaml.cs b/XplorePlane/Views/ImageProcessing/OperatorToolboxWindow.xaml.cs
index db12343..a6c6c4a 100644
--- a/XplorePlane/Views/ImageProcessing/OperatorToolboxWindow.xaml.cs
+++ b/XplorePlane/Views/ImageProcessing/OperatorToolboxWindow.xaml.cs
@@ -27,4 +27,4 @@ namespace XplorePlane.Views
Close();
}
}
-}
+}
\ No newline at end of file
diff --git a/XplorePlane/Views/ImageProcessing/PipelineEditorView.xaml.cs b/XplorePlane/Views/ImageProcessing/PipelineEditorView.xaml.cs
index 55fb7db..3d63e75 100644
--- a/XplorePlane/Views/ImageProcessing/PipelineEditorView.xaml.cs
+++ b/XplorePlane/Views/ImageProcessing/PipelineEditorView.xaml.cs
@@ -1,6 +1,6 @@
+using Prism.Ioc;
using System.Windows;
using System.Windows.Controls;
-using Prism.Ioc;
using XP.Common.Logging.Interfaces;
using XplorePlane.ViewModels;
@@ -69,4 +69,4 @@ namespace XplorePlane.Views
e.Handled = true;
}
}
-}
+}
\ No newline at end of file
diff --git a/XplorePlane/Views/ImageProcessing/PipelineEditorWindow.xaml b/XplorePlane/Views/ImageProcessing/PipelineEditorWindow.xaml
index 033abf1..ad38738 100644
--- a/XplorePlane/Views/ImageProcessing/PipelineEditorWindow.xaml
+++ b/XplorePlane/Views/ImageProcessing/PipelineEditorWindow.xaml
@@ -8,12 +8,12 @@
ShowInTaskbar="False">
-
-
-
+
+
+
-
-
-
+
+
+
-
+
\ No newline at end of file
diff --git a/XplorePlane/Views/ImageProcessing/PipelineEditorWindow.xaml.cs b/XplorePlane/Views/ImageProcessing/PipelineEditorWindow.xaml.cs
index b006f46..8129087 100644
--- a/XplorePlane/Views/ImageProcessing/PipelineEditorWindow.xaml.cs
+++ b/XplorePlane/Views/ImageProcessing/PipelineEditorWindow.xaml.cs
@@ -9,4 +9,4 @@ namespace XplorePlane.Views
InitializeComponent();
}
}
-}
+}
\ No newline at end of file
diff --git a/XplorePlane/Views/Main/ImagePanelView.xaml b/XplorePlane/Views/Main/ImagePanelView.xaml
index 010f4c6..cabb4fa 100644
--- a/XplorePlane/Views/Main/ImagePanelView.xaml
+++ b/XplorePlane/Views/Main/ImagePanelView.xaml
@@ -19,4 +19,4 @@
-
+
\ No newline at end of file
diff --git a/XplorePlane/Views/Main/ImagePanelView.xaml.cs b/XplorePlane/Views/Main/ImagePanelView.xaml.cs
index 3f98c0d..410b68a 100644
--- a/XplorePlane/Views/Main/ImagePanelView.xaml.cs
+++ b/XplorePlane/Views/Main/ImagePanelView.xaml.cs
@@ -9,4 +9,4 @@ namespace XplorePlane.Views
InitializeComponent();
}
}
-}
+}
\ No newline at end of file
diff --git a/XplorePlane/Views/Main/MainWindow.xaml.cs b/XplorePlane/Views/Main/MainWindow.xaml.cs
index 822cd52..b845b95 100644
--- a/XplorePlane/Views/Main/MainWindow.xaml.cs
+++ b/XplorePlane/Views/Main/MainWindow.xaml.cs
@@ -1,6 +1,5 @@
-using System.Windows;
using Prism.Ioc;
-using Telerik.Windows.Controls;
+using System.Windows;
using XplorePlane.ViewModels;
namespace XplorePlane.Views
@@ -54,4 +53,4 @@ namespace XplorePlane.Views
window.Show();
}
}
-}
+}
\ No newline at end of file
diff --git a/XplorePlane/Views/Main/MainWindowB.xaml b/XplorePlane/Views/Main/MainWindowB.xaml
index 1f9b642..e0027cc 100644
--- a/XplorePlane/Views/Main/MainWindowB.xaml
+++ b/XplorePlane/Views/Main/MainWindowB.xaml
@@ -1410,7 +1410,6 @@
-
-
+
\ No newline at end of file
diff --git a/XplorePlane/Views/Main/NavigationPanelView.xaml.cs b/XplorePlane/Views/Main/NavigationPanelView.xaml.cs
index b5d8375..0145b6c 100644
--- a/XplorePlane/Views/Main/NavigationPanelView.xaml.cs
+++ b/XplorePlane/Views/Main/NavigationPanelView.xaml.cs
@@ -9,4 +9,4 @@ namespace XplorePlane.Views
InitializeComponent();
}
}
-}
+}
\ No newline at end of file
diff --git a/XplorePlane/Views/Main/NavigationPropertyPanelView.xaml b/XplorePlane/Views/Main/NavigationPropertyPanelView.xaml
index d1fa9c4..0903360 100644
--- a/XplorePlane/Views/Main/NavigationPropertyPanelView.xaml
+++ b/XplorePlane/Views/Main/NavigationPropertyPanelView.xaml
@@ -103,4 +103,4 @@
-
+
\ No newline at end of file
diff --git a/XplorePlane/Views/Main/NavigationPropertyPanelView.xaml.cs b/XplorePlane/Views/Main/NavigationPropertyPanelView.xaml.cs
index 7514120..1174b73 100644
--- a/XplorePlane/Views/Main/NavigationPropertyPanelView.xaml.cs
+++ b/XplorePlane/Views/Main/NavigationPropertyPanelView.xaml.cs
@@ -1,8 +1,8 @@
+using Prism.Ioc;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using XplorePlane.ViewModels;
-using Prism.Ioc;
namespace XplorePlane.Views
{
@@ -51,4 +51,4 @@ namespace XplorePlane.Views
_viewModel.CameraPixelCoord = "";
}
}
-}
+}
\ No newline at end of file
diff --git a/XplorePlane/Views/Main/ViewportPanelView.xaml b/XplorePlane/Views/Main/ViewportPanelView.xaml
index 1be7536..926b957 100644
--- a/XplorePlane/Views/Main/ViewportPanelView.xaml
+++ b/XplorePlane/Views/Main/ViewportPanelView.xaml
@@ -33,4 +33,4 @@
Foreground="#999999"
Text="2D Viewport" />
-
+
\ No newline at end of file
diff --git a/XplorePlane/Views/Main/ViewportPanelView.xaml.cs b/XplorePlane/Views/Main/ViewportPanelView.xaml.cs
index 9be1f23..7eddbee 100644
--- a/XplorePlane/Views/Main/ViewportPanelView.xaml.cs
+++ b/XplorePlane/Views/Main/ViewportPanelView.xaml.cs
@@ -9,4 +9,4 @@ namespace XplorePlane.Views
InitializeComponent();
}
}
-}
+}
\ No newline at end of file
diff --git a/XplorePlane/XplorePlane.csproj b/XplorePlane/XplorePlane.csproj
index 55c6f1c..c87efbc 100644
--- a/XplorePlane/XplorePlane.csproj
+++ b/XplorePlane/XplorePlane.csproj
@@ -162,10 +162,10 @@
-
-
-
-
+
+
+
+
diff --git a/XplorePlane/bin/Debug/net8.0-windows/App.config b/XplorePlane/bin/Debug/net8.0-windows/App.config
deleted file mode 100644
index 079fa00..0000000
--- a/XplorePlane/bin/Debug/net8.0-windows/App.config
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/XplorePlane/bin/Debug/net8.0-windows/ControlzEx.dll b/XplorePlane/bin/Debug/net8.0-windows/ControlzEx.dll
deleted file mode 100644
index 54d5137..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/ControlzEx.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/DryIoc.dll b/XplorePlane/bin/Debug/net8.0-windows/DryIoc.dll
deleted file mode 100644
index 44be230..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/DryIoc.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/Fluent.dll b/XplorePlane/bin/Debug/net8.0-windows/Fluent.dll
deleted file mode 100644
index 2cff288..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/Fluent.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/Microsoft.Extensions.DependencyInjection.Abstractions.dll b/XplorePlane/bin/Debug/net8.0-windows/Microsoft.Extensions.DependencyInjection.Abstractions.dll
deleted file mode 100644
index a1c0a86..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/Microsoft.Extensions.DependencyInjection.Abstractions.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/Microsoft.Xaml.Behaviors.dll b/XplorePlane/bin/Debug/net8.0-windows/Microsoft.Xaml.Behaviors.dll
deleted file mode 100644
index 940dbcd..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/Microsoft.Xaml.Behaviors.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/Prism.Container.Abstractions.dll b/XplorePlane/bin/Debug/net8.0-windows/Prism.Container.Abstractions.dll
deleted file mode 100644
index fe603d0..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/Prism.Container.Abstractions.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/Prism.Container.DryIoc.dll b/XplorePlane/bin/Debug/net8.0-windows/Prism.Container.DryIoc.dll
deleted file mode 100644
index 1cfb8ae..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/Prism.Container.DryIoc.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/Prism.DryIoc.Wpf.dll b/XplorePlane/bin/Debug/net8.0-windows/Prism.DryIoc.Wpf.dll
deleted file mode 100644
index e4b97e3..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/Prism.DryIoc.Wpf.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/Prism.Events.dll b/XplorePlane/bin/Debug/net8.0-windows/Prism.Events.dll
deleted file mode 100644
index bf533e0..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/Prism.Events.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/Prism.Wpf.dll b/XplorePlane/bin/Debug/net8.0-windows/Prism.Wpf.dll
deleted file mode 100644
index c686b23..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/Prism.Wpf.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/Prism.dll b/XplorePlane/bin/Debug/net8.0-windows/Prism.dll
deleted file mode 100644
index 373abd1..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/Prism.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/Serilog.Sinks.Console.dll b/XplorePlane/bin/Debug/net8.0-windows/Serilog.Sinks.Console.dll
deleted file mode 100644
index 8d0638d..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/Serilog.Sinks.Console.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/Serilog.Sinks.Debug.dll b/XplorePlane/bin/Debug/net8.0-windows/Serilog.Sinks.Debug.dll
deleted file mode 100644
index 7c94015..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/Serilog.Sinks.Debug.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/Serilog.Sinks.File.dll b/XplorePlane/bin/Debug/net8.0-windows/Serilog.Sinks.File.dll
deleted file mode 100644
index 3cc5508..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/Serilog.Sinks.File.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/Serilog.dll b/XplorePlane/bin/Debug/net8.0-windows/Serilog.dll
deleted file mode 100644
index 6193162..0000000
Binary files a/XplorePlane/bin/Debug/net8.0-windows/Serilog.dll and /dev/null differ
diff --git a/XplorePlane/bin/Debug/net8.0-windows/XplorePlane.dll.config b/XplorePlane/bin/Debug/net8.0-windows/XplorePlane.dll.config
deleted file mode 100644
index 079fa00..0000000
--- a/XplorePlane/bin/Debug/net8.0-windows/XplorePlane.dll.config
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/XplorePlane/bin/Debug/net8.0-windows/XplorePlane.runtimeconfig.json b/XplorePlane/bin/Debug/net8.0-windows/XplorePlane.runtimeconfig.json
deleted file mode 100644
index b2dedf3..0000000
--- a/XplorePlane/bin/Debug/net8.0-windows/XplorePlane.runtimeconfig.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "runtimeOptions": {
- "tfm": "net8.0",
- "frameworks": [
- {
- "name": "Microsoft.NETCore.App",
- "version": "8.0.0"
- },
- {
- "name": "Microsoft.WindowsDesktop.App",
- "version": "8.0.0"
- }
- ],
- "configProperties": {
- "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true,
- "CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false
- }
- }
-}
\ No newline at end of file