Files
XplorePlane/XP.ImageProcessing.Processors/Resources/Resources.resx
T
2026-04-13 14:36:18 +08:00

1294 lines
53 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<!-- ContrastProcessor -->
<data name="ContrastProcessor_Name" xml:space="preserve">
<value>Contrast Adjustment</value>
</data>
<data name="ContrastProcessor_Description" xml:space="preserve">
<value>Adjust image contrast and brightness</value>
</data>
<data name="ContrastProcessor_Contrast" xml:space="preserve">
<value>Contrast</value>
</data>
<data name="ContrastProcessor_Contrast_Desc" xml:space="preserve">
<value>Contrast gain, 1.0 for original contrast</value>
</data>
<data name="ContrastProcessor_Brightness" xml:space="preserve">
<value>Brightness</value>
</data>
<data name="ContrastProcessor_Brightness_Desc" xml:space="preserve">
<value>Brightness offset</value>
</data>
<data name="ContrastProcessor_AutoContrast" xml:space="preserve">
<value>Auto Contrast</value>
</data>
<data name="ContrastProcessor_AutoContrast_Desc" xml:space="preserve">
<value>Automatically stretch contrast to full range</value>
</data>
<data name="ContrastProcessor_UseCLAHE" xml:space="preserve">
<value>Use CLAHE</value>
</data>
<data name="ContrastProcessor_UseCLAHE_Desc" xml:space="preserve">
<value>Use Contrast Limited Adaptive Histogram Equalization</value>
</data>
<data name="ContrastProcessor_ClipLimit" xml:space="preserve">
<value>CLAHE Clip Limit</value>
</data>
<data name="ContrastProcessor_ClipLimit_Desc" xml:space="preserve">
<value>CLAHE contrast limit threshold</value>
</data>
<!-- BandPassFilterProcessor -->
<data name="BandPassFilterProcessor_Name" xml:space="preserve">
<value>Band Pass Filter</value>
</data>
<data name="BandPassFilterProcessor_Description" xml:space="preserve">
<value>Preserve image information within specified frequency range</value>
</data>
<data name="BandPassFilterProcessor_LowCutoff" xml:space="preserve">
<value>Low Cutoff Radius</value>
</data>
<data name="BandPassFilterProcessor_LowCutoff_Desc" xml:space="preserve">
<value>Components below this frequency will be removed</value>
</data>
<data name="BandPassFilterProcessor_HighCutoff" xml:space="preserve">
<value>High Cutoff Radius</value>
</data>
<data name="BandPassFilterProcessor_HighCutoff_Desc" xml:space="preserve">
<value>Components above this frequency will be removed</value>
</data>
<data name="BandPassFilterProcessor_FilterType" xml:space="preserve">
<value>Filter Type</value>
</data>
<data name="BandPassFilterProcessor_FilterType_Desc" xml:space="preserve">
<value>Transition characteristics of the filter</value>
</data>
<data name="BandPassFilterProcessor_Order" xml:space="preserve">
<value>Butterworth Order</value>
</data>
<data name="BandPassFilterProcessor_Order_Desc" xml:space="preserve">
<value>Order of Butterworth filter</value>
</data>
<!-- ContourProcessor -->
<data name="ContourProcessor_Name" xml:space="preserve">
<value>Contour Detection</value>
</data>
<data name="ContourProcessor_Description" xml:space="preserve">
<value>Detect contours in image and output contour information</value>
</data>
<data name="ContourProcessor_TargetColor" xml:space="preserve">
<value>Target Color</value>
</data>
<data name="ContourProcessor_TargetColor_Desc" xml:space="preserve">
<value>Select the color of regions to find (white or black)</value>
</data>
<data name="ContourProcessor_UseThreshold" xml:space="preserve">
<value>Enable Threshold</value>
</data>
<data name="ContourProcessor_UseThreshold_Desc" xml:space="preserve">
<value>Apply binary threshold before contour detection</value>
</data>
<data name="ContourProcessor_ThresholdValue" xml:space="preserve">
<value>Threshold Value</value>
</data>
<data name="ContourProcessor_ThresholdValue_Desc" xml:space="preserve">
<value>Threshold value for binarization (0-255)</value>
</data>
<data name="ContourProcessor_UseOtsu" xml:space="preserve">
<value>Use Otsu Auto Threshold</value>
</data>
<data name="ContourProcessor_UseOtsu_Desc" xml:space="preserve">
<value>Automatically calculate optimal threshold</value>
</data>
<data name="ContourProcessor_MinArea" xml:space="preserve">
<value>Min Area</value>
</data>
<data name="ContourProcessor_MinArea_Desc" xml:space="preserve">
<value>Filter contours smaller than this area</value>
</data>
<data name="ContourProcessor_MaxArea" xml:space="preserve">
<value>Max Area</value>
</data>
<data name="ContourProcessor_MaxArea_Desc" xml:space="preserve">
<value>Filter contours larger than this area</value>
</data>
<data name="ContourProcessor_Thickness" xml:space="preserve">
<value>Line Thickness</value>
</data>
<data name="ContourProcessor_Thickness_Desc" xml:space="preserve">
<value>Thickness of contour lines</value>
</data>
<!-- DivisionProcessor -->
<data name="DivisionProcessor_Name" xml:space="preserve">
<value>Division Operation</value>
</data>
<data name="DivisionProcessor_Description" xml:space="preserve">
<value>Perform division operation on image for background correction and normalization</value>
</data>
<data name="DivisionProcessor_Divisor" xml:space="preserve">
<value>Divisor</value>
</data>
<data name="DivisionProcessor_Divisor_Desc" xml:space="preserve">
<value>Each pixel value will be divided by this number</value>
</data>
<data name="DivisionProcessor_Scale" xml:space="preserve">
<value>Scale Factor</value>
</data>
<data name="DivisionProcessor_Scale_Desc" xml:space="preserve">
<value>Division result multiplied by this scale factor</value>
</data>
<data name="DivisionProcessor_Normalize" xml:space="preserve">
<value>Normalize Output</value>
</data>
<data name="DivisionProcessor_Normalize_Desc" xml:space="preserve">
<value>Normalize result to 0-255 range</value>
</data>
<!-- GammaProcessor -->
<data name="GammaProcessor_Name" xml:space="preserve">
<value>Gamma Correction</value>
</data>
<data name="GammaProcessor_Description" xml:space="preserve">
<value>Adjust image brightness through Gamma value</value>
</data>
<data name="GammaProcessor_Gamma" xml:space="preserve">
<value>Gamma Value</value>
</data>
<data name="GammaProcessor_Gamma_Desc" xml:space="preserve">
<value>Gamma value, less than 1 darkens image, greater than 1 brightens image</value>
</data>
<data name="GammaProcessor_Gain" xml:space="preserve">
<value>Gain</value>
</data>
<data name="GammaProcessor_Gain_Desc" xml:space="preserve">
<value>Output gain coefficient</value>
</data>
<!-- GaussianBlurProcessor -->
<data name="GaussianBlurProcessor_Name" xml:space="preserve">
<value>Gaussian Blur</value>
</data>
<data name="GaussianBlurProcessor_Description" xml:space="preserve">
<value>Smooth image using Gaussian kernel</value>
</data>
<data name="GaussianBlurProcessor_KernelSize" xml:space="preserve">
<value>Kernel Size</value>
</data>
<data name="GaussianBlurProcessor_KernelSize_Desc" xml:space="preserve">
<value>Size of Gaussian kernel, must be odd</value>
</data>
<data name="GaussianBlurProcessor_Sigma" xml:space="preserve">
<value>Standard Deviation</value>
</data>
<data name="GaussianBlurProcessor_Sigma_Desc" xml:space="preserve">
<value>Standard deviation of Gaussian kernel, controls blur amount</value>
</data>
<!-- MorphologyProcessor -->
<data name="MorphologyProcessor_Name" xml:space="preserve">
<value>Morphology Processing</value>
</data>
<data name="MorphologyProcessor_Description" xml:space="preserve">
<value>Perform morphological operations (erosion, dilation, opening, closing)</value>
</data>
<data name="MorphologyProcessor_Operation" xml:space="preserve">
<value>Operation Type</value>
</data>
<data name="MorphologyProcessor_Operation_Desc" xml:space="preserve">
<value>Select morphological operation type</value>
</data>
<data name="MorphologyProcessor_KernelSize" xml:space="preserve">
<value>Kernel Size</value>
</data>
<data name="MorphologyProcessor_KernelSize_Desc" xml:space="preserve">
<value>Size of structuring element</value>
</data>
<data name="MorphologyProcessor_Iterations" xml:space="preserve">
<value>Iterations</value>
</data>
<data name="MorphologyProcessor_Iterations_Desc" xml:space="preserve">
<value>Number of times to repeat morphological operation</value>
</data>
<!-- ShockFilterProcessor -->
<data name="ShockFilterProcessor_Name" xml:space="preserve">
<value>Shock Filter</value>
</data>
<data name="ShockFilterProcessor_Description" xml:space="preserve">
<value>Edge enhancement and denoising</value>
</data>
<data name="ShockFilterProcessor_Iterations" xml:space="preserve">
<value>Iterations</value>
</data>
<data name="ShockFilterProcessor_Iterations_Desc" xml:space="preserve">
<value>Number of filter iterations</value>
</data>
<data name="ShockFilterProcessor_Theta" xml:space="preserve">
<value>Threshold</value>
</data>
<data name="ShockFilterProcessor_Theta_Desc" xml:space="preserve">
<value>Edge detection threshold</value>
</data>
<data name="ShockFilterProcessor_Dt" xml:space="preserve">
<value>Time Step</value>
</data>
<data name="ShockFilterProcessor_Dt_Desc" xml:space="preserve">
<value>Evolution time step</value>
</data>
<!-- ThresholdProcessor -->
<data name="ThresholdProcessor_Name" xml:space="preserve">
<value>Threshold Segmentation</value>
</data>
<data name="ThresholdProcessor_Description" xml:space="preserve">
<value>Binarize image</value>
</data>
<data name="ThresholdProcessor_Threshold" xml:space="preserve">
<value>Threshold</value>
</data>
<data name="ThresholdProcessor_Threshold_Desc" xml:space="preserve">
<value>Binarization threshold, pixels above this value will be set to max value</value>
</data>
<data name="ThresholdProcessor_MaxValue" xml:space="preserve">
<value>Max Value</value>
</data>
<data name="ThresholdProcessor_MaxValue_Desc" xml:space="preserve">
<value>Pixels above threshold will be set to this value</value>
</data>
<data name="ThresholdProcessor_UseOtsu" xml:space="preserve">
<value>Use Otsu Auto Threshold</value>
</data>
<data name="ThresholdProcessor_UseOtsu_Desc" xml:space="preserve">
<value>When enabled, optimal threshold will be calculated automatically</value>
</data>
<!-- FilterProcessor -->
<data name="FilterProcessor_Name" xml:space="preserve">
<value>Comprehensive Filter</value>
</data>
<data name="FilterProcessor_Description" xml:space="preserve">
<value>Integrated multiple filtering methods</value>
</data>
<data name="FilterProcessor_FilterType" xml:space="preserve">
<value>Filter Type</value>
</data>
<data name="FilterProcessor_FilterType_Desc" xml:space="preserve">
<value>Select filtering method</value>
</data>
<data name="FilterProcessor_KernelSize" xml:space="preserve">
<value>Kernel Size</value>
</data>
<data name="FilterProcessor_KernelSize_Desc" xml:space="preserve">
<value>Size of the filter kernel (must be odd)</value>
</data>
<data name="FilterProcessor_Sigma" xml:space="preserve">
<value>Sigma</value>
</data>
<data name="FilterProcessor_Sigma_Desc" xml:space="preserve">
<value>Standard deviation for Gaussian/Bilateral filter</value>
</data>
<data name="FilterProcessor_D0" xml:space="preserve">
<value>Cutoff Frequency</value>
</data>
<data name="FilterProcessor_D0_Desc" xml:space="preserve">
<value>Cutoff frequency for frequency domain filtering</value>
</data>
<data name="FilterProcessor_LowCutoff" xml:space="preserve">
<value>Low Cutoff Radius</value>
</data>
<data name="FilterProcessor_LowCutoff_Desc" xml:space="preserve">
<value>Components below this frequency will be removed</value>
</data>
<data name="FilterProcessor_HighCutoff" xml:space="preserve">
<value>High Cutoff Radius</value>
</data>
<data name="FilterProcessor_HighCutoff_Desc" xml:space="preserve">
<value>Components above this frequency will be removed</value>
</data>
<data name="FilterProcessor_BandPassFilterType" xml:space="preserve">
<value>Band Pass Filter Type</value>
</data>
<data name="FilterProcessor_BandPassFilterType_Desc" xml:space="preserve">
<value>Transition characteristics of the band pass filter</value>
</data>
<data name="FilterProcessor_Order" xml:space="preserve">
<value>Butterworth Order</value>
</data>
<data name="FilterProcessor_Order_Desc" xml:space="preserve">
<value>Order of Butterworth filter</value>
</data>
<!-- FilterProcessor - Gaussian -->
<data name="FilterProcessor_Gaussian_Name" xml:space="preserve">
<value>Gaussian Filter</value>
</data>
<data name="FilterProcessor_Gaussian_Desc" xml:space="preserve">
<value>Smooth image and reduce Gaussian noise while preserving edges</value>
</data>
<!-- FilterProcessor - Median -->
<data name="FilterProcessor_Median_Name" xml:space="preserve">
<value>Median Filter</value>
</data>
<data name="FilterProcessor_Median_Desc" xml:space="preserve">
<value>Remove salt-and-pepper noise effectively</value>
</data>
<!-- FilterProcessor - Mean -->
<data name="FilterProcessor_Mean_Name" xml:space="preserve">
<value>Mean Filter</value>
</data>
<data name="FilterProcessor_Mean_Desc" xml:space="preserve">
<value>Simple averaging smoothing filter</value>
</data>
<!-- FilterProcessor - Bilateral -->
<data name="FilterProcessor_Bilateral_Name" xml:space="preserve">
<value>Bilateral Filter</value>
</data>
<data name="FilterProcessor_Bilateral_Desc" xml:space="preserve">
<value>Edge-preserving smoothing filter</value>
</data>
<!-- FilterProcessor - LowPass -->
<data name="FilterProcessor_LowPass_Name" xml:space="preserve">
<value>Low Pass Filter</value>
</data>
<data name="FilterProcessor_LowPass_Desc" xml:space="preserve">
<value>Remove high frequency noise in frequency domain</value>
</data>
<!-- FilterProcessor - HighPass -->
<data name="FilterProcessor_HighPass_Name" xml:space="preserve">
<value>High Pass Filter</value>
</data>
<data name="FilterProcessor_HighPass_Desc" xml:space="preserve">
<value>Edge enhancement in frequency domain</value>
</data>
<!-- FilterProcessor - BandPass -->
<data name="FilterProcessor_BandPass_Name" xml:space="preserve">
<value>Band Pass Filter</value>
</data>
<data name="FilterProcessor_BandPass_Desc" xml:space="preserve">
<value>Preserve image information within specified frequency range</value>
</data>
<!-- MedianFilterProcessor -->
<data name="MedianFilterProcessor_Name" xml:space="preserve">
<value>Median Filter</value>
</data>
<data name="MedianFilterProcessor_Description" xml:space="preserve">
<value>Remove salt-and-pepper noise effectively</value>
</data>
<data name="MedianFilterProcessor_KernelSize" xml:space="preserve">
<value>Kernel Size</value>
</data>
<data name="MedianFilterProcessor_KernelSize_Desc" xml:space="preserve">
<value>Size of the filter kernel (must be odd)</value>
</data>
<!-- MeanFilterProcessor -->
<data name="MeanFilterProcessor_Name" xml:space="preserve">
<value>Mean Filter</value>
</data>
<data name="MeanFilterProcessor_Description" xml:space="preserve">
<value>Simple averaging smoothing filter</value>
</data>
<data name="MeanFilterProcessor_KernelSize" xml:space="preserve">
<value>Kernel Size</value>
</data>
<data name="MeanFilterProcessor_KernelSize_Desc" xml:space="preserve">
<value>Size of the filter kernel (must be odd)</value>
</data>
<!-- BilateralFilterProcessor -->
<data name="BilateralFilterProcessor_Name" xml:space="preserve">
<value>Bilateral Filter</value>
</data>
<data name="BilateralFilterProcessor_Description" xml:space="preserve">
<value>Edge-preserving smoothing filter</value>
</data>
<data name="BilateralFilterProcessor_Diameter" xml:space="preserve">
<value>Diameter</value>
</data>
<data name="BilateralFilterProcessor_Diameter_Desc" xml:space="preserve">
<value>Diameter of each pixel neighborhood</value>
</data>
<data name="BilateralFilterProcessor_SigmaColor" xml:space="preserve">
<value>Sigma Color</value>
</data>
<data name="BilateralFilterProcessor_SigmaColor_Desc" xml:space="preserve">
<value>Filter sigma in the color space</value>
</data>
<data name="BilateralFilterProcessor_SigmaSpace" xml:space="preserve">
<value>Sigma Space</value>
</data>
<data name="BilateralFilterProcessor_SigmaSpace_Desc" xml:space="preserve">
<value>Filter sigma in the coordinate space</value>
</data>
<!-- LowPassFilterProcessor -->
<data name="LowPassFilterProcessor_Name" xml:space="preserve">
<value>Low Pass Filter</value>
</data>
<data name="LowPassFilterProcessor_Description" xml:space="preserve">
<value>Remove high frequency noise in frequency domain</value>
</data>
<data name="LowPassFilterProcessor_CutoffFrequency" xml:space="preserve">
<value>Cutoff Frequency</value>
</data>
<data name="LowPassFilterProcessor_CutoffFrequency_Desc" xml:space="preserve">
<value>Cutoff frequency for low pass filter</value>
</data>
<!-- HighPassFilterProcessor -->
<data name="HighPassFilterProcessor_Name" xml:space="preserve">
<value>High Pass Filter</value>
</data>
<data name="HighPassFilterProcessor_Description" xml:space="preserve">
<value>Edge enhancement in frequency domain</value>
</data>
<data name="HighPassFilterProcessor_CutoffFrequency" xml:space="preserve">
<value>Cutoff Frequency</value>
</data>
<data name="HighPassFilterProcessor_CutoffFrequency_Desc" xml:space="preserve">
<value>Cutoff frequency for high pass filter</value>
</data>
<!-- GrayscaleProcessor -->
<data name="GrayscaleProcessor_Name" xml:space="preserve">
<value>Grayscale Conversion</value>
</data>
<data name="GrayscaleProcessor_Description" xml:space="preserve">
<value>Convert image to grayscale</value>
</data>
<data name="GrayscaleProcessor_Method" xml:space="preserve">
<value>Conversion Method</value>
</data>
<data name="GrayscaleProcessor_Method_Desc" xml:space="preserve">
<value>Method for grayscale conversion</value>
</data>
<!-- SharpenProcessor -->
<data name="SharpenProcessor_Name" xml:space="preserve">
<value>Sharpen</value>
</data>
<data name="SharpenProcessor_Description" xml:space="preserve">
<value>Enhance image edges and details</value>
</data>
<data name="SharpenProcessor_Method" xml:space="preserve">
<value>Sharpen Method</value>
</data>
<data name="SharpenProcessor_Method_Desc" xml:space="preserve">
<value>Select sharpening algorithm</value>
</data>
<data name="SharpenProcessor_Strength" xml:space="preserve">
<value>Strength</value>
</data>
<data name="SharpenProcessor_Strength_Desc" xml:space="preserve">
<value>Strength of sharpening effect</value>
</data>
<data name="SharpenProcessor_KernelSize" xml:space="preserve">
<value>Kernel Size</value>
</data>
<data name="SharpenProcessor_KernelSize_Desc" xml:space="preserve">
<value>Size of sharpening kernel (must be odd)</value>
</data>
<!-- HistogramEqualizationProcessor -->
<data name="HistogramEqualizationProcessor_Name" xml:space="preserve">
<value>Histogram Equalization</value>
</data>
<data name="HistogramEqualizationProcessor_Description" xml:space="preserve">
<value>Enhance image contrast</value>
</data>
<data name="HistogramEqualizationProcessor_Method" xml:space="preserve">
<value>Equalization Method</value>
</data>
<data name="HistogramEqualizationProcessor_Method_Desc" xml:space="preserve">
<value>Select histogram equalization algorithm</value>
</data>
<data name="HistogramEqualizationProcessor_ClipLimit" xml:space="preserve">
<value>Clip Limit</value>
</data>
<data name="HistogramEqualizationProcessor_ClipLimit_Desc" xml:space="preserve">
<value>Contrast limiting threshold for CLAHE</value>
</data>
<data name="HistogramEqualizationProcessor_TileSize" xml:space="preserve">
<value>Tile Size</value>
</data>
<data name="HistogramEqualizationProcessor_TileSize_Desc" xml:space="preserve">
<value>Tile size for CLAHE</value>
</data>
<!-- SobelEdgeProcessor -->
<data name="SobelEdgeProcessor_Name" xml:space="preserve">
<value>Sobel Edge Detection</value>
</data>
<data name="SobelEdgeProcessor_Description" xml:space="preserve">
<value>Detect image edges using Sobel operator</value>
</data>
<data name="SobelEdgeProcessor_Direction" xml:space="preserve">
<value>Detection Direction</value>
</data>
<data name="SobelEdgeProcessor_Direction_Desc" xml:space="preserve">
<value>Select edge detection direction</value>
</data>
<data name="SobelEdgeProcessor_KernelSize" xml:space="preserve">
<value>Kernel Size</value>
</data>
<data name="SobelEdgeProcessor_KernelSize_Desc" xml:space="preserve">
<value>Sobel operator kernel size (odd number)</value>
</data>
<data name="SobelEdgeProcessor_Scale" xml:space="preserve">
<value>Scale Factor</value>
</data>
<data name="SobelEdgeProcessor_Scale_Desc" xml:space="preserve">
<value>Scale factor for edge intensity</value>
</data>
<!-- KirschEdgeProcessor -->
<data name="KirschEdgeProcessor_Name" xml:space="preserve">
<value>Kirsch Edge Detection</value>
</data>
<data name="KirschEdgeProcessor_Description" xml:space="preserve">
<value>Detect image edges using Kirsch operator</value>
</data>
<data name="KirschEdgeProcessor_Threshold" xml:space="preserve">
<value>Threshold</value>
</data>
<data name="KirschEdgeProcessor_Threshold_Desc" xml:space="preserve">
<value>Edge detection threshold</value>
</data>
<data name="KirschEdgeProcessor_Scale" xml:space="preserve">
<value>Scale Factor</value>
</data>
<data name="KirschEdgeProcessor_Scale_Desc" xml:space="preserve">
<value>Scale factor for edge intensity</value>
</data>
<!-- HorizontalEdgeProcessor -->
<data name="HorizontalEdgeProcessor_Name" xml:space="preserve">
<value>Horizontal Edge Detection</value>
</data>
<data name="HorizontalEdgeProcessor_Description" xml:space="preserve">
<value>Detect horizontal edges specifically</value>
</data>
<data name="HorizontalEdgeProcessor_Method" xml:space="preserve">
<value>Detection Method</value>
</data>
<data name="HorizontalEdgeProcessor_Method_Desc" xml:space="preserve">
<value>Select horizontal edge detection algorithm</value>
</data>
<data name="HorizontalEdgeProcessor_Sensitivity" xml:space="preserve">
<value>Sensitivity</value>
</data>
<data name="HorizontalEdgeProcessor_Sensitivity_Desc" xml:space="preserve">
<value>Edge detection sensitivity</value>
</data>
<data name="HorizontalEdgeProcessor_Threshold" xml:space="preserve">
<value>Threshold</value>
</data>
<data name="HorizontalEdgeProcessor_Threshold_Desc" xml:space="preserve">
<value>Edge detection threshold</value>
</data>
<!-- RetinexProcessor -->
<data name="RetinexProcessor_Name" xml:space="preserve">
<value>Retinex Shadow Correction</value>
</data>
<data name="RetinexProcessor_Description" xml:space="preserve">
<value>Multi-scale shadow correction and illumination equalization based on Retinex</value>
</data>
<data name="RetinexProcessor_Method" xml:space="preserve">
<value>Processing Method</value>
</data>
<data name="RetinexProcessor_Method_Desc" xml:space="preserve">
<value>Select Retinex algorithm type</value>
</data>
<data name="RetinexProcessor_Sigma1" xml:space="preserve">
<value>Scale 1 (Small)</value>
</data>
<data name="RetinexProcessor_Sigma1_Desc" xml:space="preserve">
<value>Small scale Gaussian kernel sigma for detail enhancement</value>
</data>
<data name="RetinexProcessor_Sigma2" xml:space="preserve">
<value>Scale 2 (Medium)</value>
</data>
<data name="RetinexProcessor_Sigma2_Desc" xml:space="preserve">
<value>Medium scale Gaussian kernel sigma for local illumination correction</value>
</data>
<data name="RetinexProcessor_Sigma3" xml:space="preserve">
<value>Scale 3 (Large)</value>
</data>
<data name="RetinexProcessor_Sigma3_Desc" xml:space="preserve">
<value>Large scale Gaussian kernel sigma for global illumination correction</value>
</data>
<data name="RetinexProcessor_Gain" xml:space="preserve">
<value>Gain</value>
</data>
<data name="RetinexProcessor_Gain_Desc" xml:space="preserve">
<value>Output gain factor</value>
</data>
<data name="RetinexProcessor_Offset" xml:space="preserve">
<value>Offset</value>
</data>
<data name="RetinexProcessor_Offset_Desc" xml:space="preserve">
<value>Output offset value</value>
</data>
<!-- HDREnhancementProcessor -->
<data name="HDREnhancementProcessor_Name" xml:space="preserve">
<value>HDR Enhancement</value>
</data>
<data name="HDREnhancementProcessor_Description" xml:space="preserve">
<value>High Dynamic Range image enhancement with tone mapping</value>
</data>
<data name="HDREnhancementProcessor_Method" xml:space="preserve">
<value>Tone Mapping Method</value>
</data>
<data name="HDREnhancementProcessor_Method_Desc" xml:space="preserve">
<value>Select HDR tone mapping algorithm: LocalToneMap, AdaptiveLog, Drago, BilateralToneMap</value>
</data>
<data name="HDREnhancementProcessor_Gamma" xml:space="preserve">
<value>Gamma</value>
</data>
<data name="HDREnhancementProcessor_Gamma_Desc" xml:space="preserve">
<value>Gamma correction value for output brightness adjustment</value>
</data>
<data name="HDREnhancementProcessor_Saturation" xml:space="preserve">
<value>Saturation</value>
</data>
<data name="HDREnhancementProcessor_Saturation_Desc" xml:space="preserve">
<value>Contrast saturation factor for LocalToneMap method</value>
</data>
<data name="HDREnhancementProcessor_DetailBoost" xml:space="preserve">
<value>Detail Boost</value>
</data>
<data name="HDREnhancementProcessor_DetailBoost_Desc" xml:space="preserve">
<value>Detail enhancement factor, higher values reveal more fine details</value>
</data>
<data name="HDREnhancementProcessor_SigmaSpace" xml:space="preserve">
<value>Sigma Space</value>
</data>
<data name="HDREnhancementProcessor_SigmaSpace_Desc" xml:space="preserve">
<value>Spatial sigma for base layer extraction, controls smoothing range</value>
</data>
<data name="HDREnhancementProcessor_SigmaColor" xml:space="preserve">
<value>Sigma Color</value>
</data>
<data name="HDREnhancementProcessor_SigmaColor_Desc" xml:space="preserve">
<value>Color sigma for bilateral tone mapping, controls edge preservation</value>
</data>
<data name="HDREnhancementProcessor_Bias" xml:space="preserve">
<value>Bias</value>
</data>
<data name="HDREnhancementProcessor_Bias_Desc" xml:space="preserve">
<value>Bias for adaptive logarithmic and Drago mapping, controls dark/bright balance</value>
</data>
<!-- MirrorProcessor -->
<data name="MirrorProcessor_Name" xml:space="preserve">
<value>Mirror</value>
</data>
<data name="MirrorProcessor_Description" xml:space="preserve">
<value>Flip image horizontally, vertically, or both</value>
</data>
<data name="MirrorProcessor_Direction" xml:space="preserve">
<value>Direction</value>
</data>
<data name="MirrorProcessor_Direction_Desc" xml:space="preserve">
<value>Flip direction: Horizontal (left-right), Vertical (up-down), Both (180° rotation)</value>
</data>
<!-- RotateProcessor -->
<data name="RotateProcessor_Name" xml:space="preserve">
<value>Rotate</value>
</data>
<data name="RotateProcessor_Description" xml:space="preserve">
<value>Rotate image by arbitrary angle with optional canvas expansion</value>
</data>
<data name="RotateProcessor_Angle" xml:space="preserve">
<value>Angle</value>
</data>
<data name="RotateProcessor_Angle_Desc" xml:space="preserve">
<value>Rotation angle in degrees, positive is counter-clockwise</value>
</data>
<data name="RotateProcessor_ExpandCanvas" xml:space="preserve">
<value>Expand Canvas</value>
</data>
<data name="RotateProcessor_ExpandCanvas_Desc" xml:space="preserve">
<value>Expand canvas to fit the entire rotated image, otherwise crop to original size</value>
</data>
<data name="RotateProcessor_BackgroundValue" xml:space="preserve">
<value>Background</value>
</data>
<data name="RotateProcessor_BackgroundValue_Desc" xml:space="preserve">
<value>Background fill value (0-255) for areas outside the original image</value>
</data>
<data name="RotateProcessor_Interpolation" xml:space="preserve">
<value>Interpolation</value>
</data>
<data name="RotateProcessor_Interpolation_Desc" xml:space="preserve">
<value>Interpolation method: Nearest (fast), Bilinear (smooth), Bicubic (high quality)</value>
</data>
<!-- PseudoColorProcessor -->
<data name="PseudoColorProcessor_Name" xml:space="preserve">
<value>Pseudo Color Rendering</value>
</data>
<data name="PseudoColorProcessor_Description" xml:space="preserve">
<value>Map grayscale image to color image using color maps</value>
</data>
<data name="PseudoColorProcessor_ColorMap" xml:space="preserve">
<value>Color Map</value>
</data>
<data name="PseudoColorProcessor_ColorMap_Desc" xml:space="preserve">
<value>Select color mapping table for rendering</value>
</data>
<data name="PseudoColorProcessor_MinValue" xml:space="preserve">
<value>Min Gray Value</value>
</data>
<data name="PseudoColorProcessor_MinValue_Desc" xml:space="preserve">
<value>Gray values below this will be clipped to minimum color</value>
</data>
<data name="PseudoColorProcessor_MaxValue" xml:space="preserve">
<value>Max Gray Value</value>
</data>
<data name="PseudoColorProcessor_MaxValue_Desc" xml:space="preserve">
<value>Gray values above this will be clipped to maximum color</value>
</data>
<data name="PseudoColorProcessor_InvertMap" xml:space="preserve">
<value>Invert Color Map</value>
</data>
<data name="PseudoColorProcessor_InvertMap_Desc" xml:space="preserve">
<value>Reverse the color mapping direction</value>
</data>
<!-- FilmEffectProcessor -->
<data name="FilmEffectProcessor_Name" xml:space="preserve">
<value>Electronic Film Effect</value>
</data>
<data name="FilmEffectProcessor_Description" xml:space="preserve">
<value>Simulate traditional X-ray film display with window/level and characteristic curves</value>
</data>
<data name="FilmEffectProcessor_WindowCenter" xml:space="preserve">
<value>Window Center</value>
</data>
<data name="FilmEffectProcessor_WindowCenter_Desc" xml:space="preserve">
<value>Center gray value of the display window (Window Level)</value>
</data>
<data name="FilmEffectProcessor_WindowWidth" xml:space="preserve">
<value>Window Width</value>
</data>
<data name="FilmEffectProcessor_WindowWidth_Desc" xml:space="preserve">
<value>Width of the display window, controls visible gray range</value>
</data>
<data name="FilmEffectProcessor_Invert" xml:space="preserve">
<value>Invert (Negative)</value>
</data>
<data name="FilmEffectProcessor_Invert_Desc" xml:space="preserve">
<value>Invert image to negative film effect</value>
</data>
<data name="FilmEffectProcessor_Curve" xml:space="preserve">
<value>Characteristic Curve</value>
</data>
<data name="FilmEffectProcessor_Curve_Desc" xml:space="preserve">
<value>Film characteristic curve: Linear, Sigmoid (S-curve), Logarithmic, Exponential</value>
</data>
<data name="FilmEffectProcessor_CurveStrength" xml:space="preserve">
<value>Curve Strength</value>
</data>
<data name="FilmEffectProcessor_CurveStrength_Desc" xml:space="preserve">
<value>Strength of the characteristic curve effect</value>
</data>
<data name="FilmEffectProcessor_EdgeEnhance" xml:space="preserve">
<value>Edge Enhancement</value>
</data>
<data name="FilmEffectProcessor_EdgeEnhance_Desc" xml:space="preserve">
<value>Edge enhancement strength to simulate film sharpening, 0 to disable</value>
</data>
<!-- SubPixelZoomProcessor -->
<data name="SubPixelZoomProcessor_Name" xml:space="preserve">
<value>Sub-Pixel Zoom</value>
</data>
<data name="SubPixelZoomProcessor_Description" xml:space="preserve">
<value>High-quality sub-pixel image magnification with multiple interpolation methods</value>
</data>
<data name="SubPixelZoomProcessor_ScaleFactor" xml:space="preserve">
<value>Scale Factor</value>
</data>
<data name="SubPixelZoomProcessor_ScaleFactor_Desc" xml:space="preserve">
<value>Magnification factor, supports fractional values (e.g. 1.5, 2.3)</value>
</data>
<data name="SubPixelZoomProcessor_Interpolation" xml:space="preserve">
<value>Interpolation</value>
</data>
<data name="SubPixelZoomProcessor_Interpolation_Desc" xml:space="preserve">
<value>Interpolation method: Nearest, Bilinear, Bicubic, Lanczos (highest quality)</value>
</data>
<data name="SubPixelZoomProcessor_SharpenAfter" xml:space="preserve">
<value>Sharpen After Zoom</value>
</data>
<data name="SubPixelZoomProcessor_SharpenAfter_Desc" xml:space="preserve">
<value>Apply sharpening after magnification to compensate interpolation blur</value>
</data>
<data name="SubPixelZoomProcessor_SharpenStrength" xml:space="preserve">
<value>Sharpen Strength</value>
</data>
<data name="SubPixelZoomProcessor_SharpenStrength_Desc" xml:space="preserve">
<value>Strength of post-zoom sharpening</value>
</data>
<!-- SuperResolutionProcessor -->
<data name="SuperResolutionProcessor_Name" xml:space="preserve">
<value>Super Resolution (AI)</value>
</data>
<data name="SuperResolutionProcessor_Description" xml:space="preserve">
<value>Deep learning based super resolution using EDSR/FSRCNN models</value>
</data>
<data name="SuperResolutionProcessor_Model" xml:space="preserve">
<value>Model</value>
</data>
<data name="SuperResolutionProcessor_Model_Desc" xml:space="preserve">
<value>Super resolution model: EDSR (high quality, slow) or FSRCNN (fast, lightweight)</value>
</data>
<data name="SuperResolutionProcessor_Scale" xml:space="preserve">
<value>Scale Factor</value>
</data>
<data name="SuperResolutionProcessor_Scale_Desc" xml:space="preserve">
<value>Upscaling factor: 2x, 3x, or 4x</value>
</data>
<!-- ColorLayerProcessor -->
<data name="ColorLayerProcessor_Name" xml:space="preserve">
<value>Color Layer Separation</value>
</data>
<data name="ColorLayerProcessor_Description" xml:space="preserve">
<value>Separate grayscale image into distinct intensity layers</value>
</data>
<data name="ColorLayerProcessor_Layers" xml:space="preserve">
<value>Layers</value>
</data>
<data name="ColorLayerProcessor_Layers_Desc" xml:space="preserve">
<value>Number of intensity layers (2-16)</value>
</data>
<data name="ColorLayerProcessor_Method" xml:space="preserve">
<value>Method</value>
</data>
<data name="ColorLayerProcessor_Method_Desc" xml:space="preserve">
<value>Thresholding method: Uniform (equal intervals) or Otsu (adaptive)</value>
</data>
<data name="ColorLayerProcessor_OutputMode" xml:space="preserve">
<value>Output Mode</value>
</data>
<data name="ColorLayerProcessor_OutputMode_Desc" xml:space="preserve">
<value>Output mapping: EqualSpaced (evenly distributed) or MidValue (interval midpoint)</value>
</data>
<data name="ColorLayerProcessor_TargetLayer" xml:space="preserve">
<value>Target Layer</value>
</data>
<data name="ColorLayerProcessor_TargetLayer_Desc" xml:space="preserve">
<value>0 = show all layers, 1~N = show only the specified layer (white) with others black</value>
</data>
<!-- HierarchicalEnhancementProcessor -->
<data name="HierarchicalEnhancementProcessor_Name" xml:space="preserve">
<value>Hierarchical Enhancement</value>
</data>
<data name="HierarchicalEnhancementProcessor_Description" xml:space="preserve">
<value>Enhance image details at different scales using Laplacian pyramid decomposition</value>
</data>
<data name="HierarchicalEnhancementProcessor_Levels" xml:space="preserve">
<value>Pyramid Levels</value>
</data>
<data name="HierarchicalEnhancementProcessor_Levels_Desc" xml:space="preserve">
<value>Number of pyramid decomposition levels (2-8)</value>
</data>
<data name="HierarchicalEnhancementProcessor_FineGain" xml:space="preserve">
<value>Fine Detail Gain</value>
</data>
<data name="HierarchicalEnhancementProcessor_FineGain_Desc" xml:space="preserve">
<value>Gain for finest detail layer (edges, textures). 1.0 = original, &gt;1 = enhance, &lt;1 = suppress</value>
</data>
<data name="HierarchicalEnhancementProcessor_MediumGain" xml:space="preserve">
<value>Medium Detail Gain</value>
</data>
<data name="HierarchicalEnhancementProcessor_MediumGain_Desc" xml:space="preserve">
<value>Gain for medium-scale details. 1.0 = original, &gt;1 = enhance, &lt;1 = suppress</value>
</data>
<data name="HierarchicalEnhancementProcessor_CoarseGain" xml:space="preserve">
<value>Coarse Detail Gain</value>
</data>
<data name="HierarchicalEnhancementProcessor_CoarseGain_Desc" xml:space="preserve">
<value>Gain for coarse-scale details (large structures). 1.0 = original, &gt;1 = enhance, &lt;1 = suppress</value>
</data>
<data name="HierarchicalEnhancementProcessor_BaseGain" xml:space="preserve">
<value>Base Layer Gain</value>
</data>
<data name="HierarchicalEnhancementProcessor_BaseGain_Desc" xml:space="preserve">
<value>Gain for the base (lowest frequency) layer, controls overall brightness</value>
</data>
<data name="HierarchicalEnhancementProcessor_ClipLimit" xml:space="preserve">
<value>Clip Limit</value>
</data>
<data name="HierarchicalEnhancementProcessor_ClipLimit_Desc" xml:space="preserve">
<value>Limit detail amplitude to prevent over-enhancement artifacts. 0 = no limit</value>
</data>
<!-- HistogramOverlayProcessor -->
<data name="HistogramOverlayProcessor_Name" xml:space="preserve">
<value>Histogram Overlay</value>
</data>
<data name="HistogramOverlayProcessor_Description" xml:space="preserve">
<value>Compute grayscale histogram and overlay it on the top-left corner of the image with statistics</value>
</data>
<!-- EllipseDetectionProcessor -->
<data name="EllipseDetectionProcessor_Name" xml:space="preserve">
<value>Ellipse Detection</value>
</data>
<data name="EllipseDetectionProcessor_Description" xml:space="preserve">
<value>Detect ellipses in image using contour analysis and ellipse fitting</value>
</data>
<data name="EllipseDetectionProcessor_MinThreshold" xml:space="preserve">
<value>Min Threshold</value>
</data>
<data name="EllipseDetectionProcessor_MinThreshold_Desc" xml:space="preserve">
<value>Minimum threshold for dual-threshold segmentation (0-255)</value>
</data>
<data name="EllipseDetectionProcessor_MaxThreshold" xml:space="preserve">
<value>Max Threshold</value>
</data>
<data name="EllipseDetectionProcessor_MaxThreshold_Desc" xml:space="preserve">
<value>Maximum threshold for dual-threshold segmentation (0-255)</value>
</data>
<data name="EllipseDetectionProcessor_UseOtsu" xml:space="preserve">
<value>Use Otsu Auto Threshold</value>
</data>
<data name="EllipseDetectionProcessor_UseOtsu_Desc" xml:space="preserve">
<value>When enabled, optimal threshold will be calculated automatically</value>
</data>
<data name="EllipseDetectionProcessor_MinContourPoints" xml:space="preserve">
<value>Min Contour Points</value>
</data>
<data name="EllipseDetectionProcessor_MinContourPoints_Desc" xml:space="preserve">
<value>Minimum number of contour points for ellipse fitting</value>
</data>
<data name="EllipseDetectionProcessor_MinArea" xml:space="preserve">
<value>Min Area</value>
</data>
<data name="EllipseDetectionProcessor_MinArea_Desc" xml:space="preserve">
<value>Filter ellipses smaller than this area</value>
</data>
<data name="EllipseDetectionProcessor_MaxArea" xml:space="preserve">
<value>Max Area</value>
</data>
<data name="EllipseDetectionProcessor_MaxArea_Desc" xml:space="preserve">
<value>Filter ellipses larger than this area</value>
</data>
<data name="EllipseDetectionProcessor_MaxEccentricity" xml:space="preserve">
<value>Max Eccentricity</value>
</data>
<data name="EllipseDetectionProcessor_MaxEccentricity_Desc" xml:space="preserve">
<value>Maximum eccentricity (0=circle, close to 1=flat ellipse)</value>
</data>
<data name="EllipseDetectionProcessor_MaxFitError" xml:space="preserve">
<value>Max Fit Error</value>
</data>
<data name="EllipseDetectionProcessor_MaxFitError_Desc" xml:space="preserve">
<value>Maximum fitting error in pixels</value>
</data>
<data name="EllipseDetectionProcessor_Thickness" xml:space="preserve">
<value>Line Thickness</value>
</data>
<data name="EllipseDetectionProcessor_Thickness_Desc" xml:space="preserve">
<value>Thickness of ellipse drawing lines</value>
</data>
<!-- LineMeasurementProcessor -->
<data name="LineMeasurementProcessor_Name" xml:space="preserve">
<value>Line Measurement</value>
</data>
<data name="LineMeasurementProcessor_Description" xml:space="preserve">
<value>Measure distance between two points in the image</value>
</data>
<data name="LineMeasurementProcessor_X1" xml:space="preserve">
<value>Point 1 X</value>
</data>
<data name="LineMeasurementProcessor_X1_Desc" xml:space="preserve">
<value>X coordinate of the first point (pixels)</value>
</data>
<data name="LineMeasurementProcessor_Y1" xml:space="preserve">
<value>Point 1 Y</value>
</data>
<data name="LineMeasurementProcessor_Y1_Desc" xml:space="preserve">
<value>Y coordinate of the first point (pixels)</value>
</data>
<data name="LineMeasurementProcessor_X2" xml:space="preserve">
<value>Point 2 X</value>
</data>
<data name="LineMeasurementProcessor_X2_Desc" xml:space="preserve">
<value>X coordinate of the second point (pixels)</value>
</data>
<data name="LineMeasurementProcessor_Y2" xml:space="preserve">
<value>Point 2 Y</value>
</data>
<data name="LineMeasurementProcessor_Y2_Desc" xml:space="preserve">
<value>Y coordinate of the second point (pixels)</value>
</data>
<data name="LineMeasurementProcessor_PixelSize" xml:space="preserve">
<value>Pixel Size</value>
</data>
<data name="LineMeasurementProcessor_PixelSize_Desc" xml:space="preserve">
<value>Physical size per pixel for calibrated measurement</value>
</data>
<data name="LineMeasurementProcessor_Unit" xml:space="preserve">
<value>Unit</value>
</data>
<data name="LineMeasurementProcessor_Unit_Desc" xml:space="preserve">
<value>Measurement unit: px (pixels), mm, μm, cm</value>
</data>
<data name="LineMeasurementProcessor_Thickness" xml:space="preserve">
<value>Line Thickness</value>
</data>
<data name="LineMeasurementProcessor_Thickness_Desc" xml:space="preserve">
<value>Thickness of the measurement line</value>
</data>
<data name="LineMeasurementProcessor_ShowLabel" xml:space="preserve">
<value>Show Label</value>
</data>
<data name="LineMeasurementProcessor_ShowLabel_Desc" xml:space="preserve">
<value>Display distance label on the measurement line</value>
</data>
<!-- FillRateProcessor -->
<data name="FillRateProcessor_Name" xml:space="preserve">
<value>Via Fill Rate (Tilted Geometric)</value>
</data>
<data name="FillRateProcessor_Description" xml:space="preserve">
<value>Measure via fill rate using 4-ellipse geometric projection on tilted X-Ray image</value>
</data>
<data name="FillRateProcessor_THTLimit" xml:space="preserve">
<value>THT Limit (%)</value>
</data>
<data name="FillRateProcessor_THTLimit_Desc" xml:space="preserve">
<value>Minimum fill rate to pass (default 75% per IPC-610)</value>
</data>
<data name="FillRateProcessor_Thickness" xml:space="preserve">
<value>Line Thickness</value>
</data>
<data name="FillRateProcessor_Thickness_Desc" xml:space="preserve">
<value>Thickness of ROI ellipse lines</value>
</data>
<!-- BgaVoidRateProcessor -->
<data name="BgaVoidRateProcessor_Name" xml:space="preserve">
<value>BGA Void Rate (Auto)</value>
</data>
<data name="BgaVoidRateProcessor_Description" xml:space="preserve">
<value>Auto-detect BGA solder balls and measure void rate (two-step: locate BGA → detect voids)</value>
</data>
<data name="BgaVoidRateProcessor_BgaMinArea" xml:space="preserve">
<value>BGA Min Area</value>
</data>
<data name="BgaVoidRateProcessor_BgaMinArea_Desc" xml:space="preserve">
<value>Minimum pixel area to identify as a BGA solder ball</value>
</data>
<data name="BgaVoidRateProcessor_RoiMode" xml:space="preserve">
<value>ROI Mode</value>
</data>
<data name="BgaVoidRateProcessor_RoiMode_Desc" xml:space="preserve">
<value>None: full image; Polygon: polygon ROI (draw ROI first)</value>
</data>
<data name="BgaVoidRateProcessor_BgaMaxArea" xml:space="preserve">
<value>BGA Max Area</value>
</data>
<data name="BgaVoidRateProcessor_BgaMaxArea_Desc" xml:space="preserve">
<value>Maximum pixel area to identify as a BGA solder ball</value>
</data>
<data name="BgaVoidRateProcessor_BgaBlurSize" xml:space="preserve">
<value>Blur Kernel</value>
</data>
<data name="BgaVoidRateProcessor_BgaBlurSize_Desc" xml:space="preserve">
<value>Gaussian blur kernel size for BGA detection (odd number)</value>
</data>
<data name="BgaVoidRateProcessor_BgaCircularity" xml:space="preserve">
<value>Min Circularity</value>
</data>
<data name="BgaVoidRateProcessor_BgaCircularity_Desc" xml:space="preserve">
<value>Minimum circularity to filter non-circular contours (0~1, 1=perfect circle)</value>
</data>
<data name="BgaVoidRateProcessor_VoidLimit" xml:space="preserve">
<value>Void Limit (%)</value>
</data>
<data name="BgaVoidRateProcessor_VoidLimit_Desc" xml:space="preserve">
<value>Maximum allowed void rate (default 25% per IPC-7095)</value>
</data>
<data name="BgaVoidRateProcessor_MinThreshold" xml:space="preserve">
<value>Min Threshold</value>
</data>
<data name="BgaVoidRateProcessor_MinThreshold_Desc" xml:space="preserve">
<value>Minimum gray value for void detection (pixels in [Min,Max] = void)</value>
</data>
<data name="BgaVoidRateProcessor_MaxThreshold" xml:space="preserve">
<value>Max Threshold</value>
</data>
<data name="BgaVoidRateProcessor_MaxThreshold_Desc" xml:space="preserve">
<value>Maximum gray value for void detection</value>
</data>
<data name="BgaVoidRateProcessor_MinVoidArea" xml:space="preserve">
<value>Min Void Area</value>
</data>
<data name="BgaVoidRateProcessor_MinVoidArea_Desc" xml:space="preserve">
<value>Minimum pixel area to count as a void (filter noise)</value>
</data>
<data name="BgaVoidRateProcessor_Thickness" xml:space="preserve">
<value>Line Thickness</value>
</data>
<data name="BgaVoidRateProcessor_Thickness_Desc" xml:space="preserve">
<value>Thickness of contour lines</value>
</data>
<!-- PointToLineProcessor -->
<data name="PointToLineProcessor_Name" xml:space="preserve">
<value>Point-to-Line Distance</value>
</data>
<data name="PointToLineProcessor_Description" xml:space="preserve">
<value>Measure perpendicular distance from a point to a line</value>
</data>
<data name="PointToLineProcessor_PixelSize" xml:space="preserve">
<value>Pixel Size</value>
</data>
<data name="PointToLineProcessor_PixelSize_Desc" xml:space="preserve">
<value>Physical size per pixel for calibrated measurement</value>
</data>
<data name="PointToLineProcessor_Unit" xml:space="preserve">
<value>Unit</value>
</data>
<data name="PointToLineProcessor_Unit_Desc" xml:space="preserve">
<value>Measurement unit: px / mm / μm / cm</value>
</data>
<data name="PointToLineProcessor_Thickness" xml:space="preserve">
<value>Line Thickness</value>
</data>
<data name="PointToLineProcessor_Thickness_Desc" xml:space="preserve">
<value>Thickness of drawing lines</value>
</data>
<!-- AngleMeasurementProcessor -->
<data name="AngleMeasurementProcessor_Name" xml:space="preserve">
<value>Angle Measurement</value>
</data>
<data name="AngleMeasurementProcessor_Description" xml:space="preserve">
<value>Measure angle between two rays sharing a common vertex</value>
</data>
<!-- VoidMeasurementProcessor -->
<data name="VoidMeasurementProcessor_Name" xml:space="preserve">
<value>Void Measurement</value>
</data>
<data name="VoidMeasurementProcessor_Description" xml:space="preserve">
<value>Detect voids in ROI and calculate void rate</value>
</data>
<data name="VoidMeasurementProcessor_MinThreshold" xml:space="preserve">
<value>Min Threshold</value>
</data>
<data name="VoidMeasurementProcessor_MinThreshold_Desc" xml:space="preserve">
<value>Lower grayscale bound for void detection</value>
</data>
<data name="VoidMeasurementProcessor_MaxThreshold" xml:space="preserve">
<value>Max Threshold</value>
</data>
<data name="VoidMeasurementProcessor_MaxThreshold_Desc" xml:space="preserve">
<value>Upper grayscale bound for void detection</value>
</data>
<data name="VoidMeasurementProcessor_MinVoidArea" xml:space="preserve">
<value>Min Void Area</value>
</data>
<data name="VoidMeasurementProcessor_MinVoidArea_Desc" xml:space="preserve">
<value>Voids smaller than this area are ignored (pixels)</value>
</data>
<data name="VoidMeasurementProcessor_MergeRadius" xml:space="preserve">
<value>Merge Radius</value>
</data>
<data name="VoidMeasurementProcessor_MergeRadius_Desc" xml:space="preserve">
<value>Dilation radius for merging adjacent voids (0=no merge)</value>
</data>
<data name="VoidMeasurementProcessor_BlurSize" xml:space="preserve">
<value>Blur Size</value>
</data>
<data name="VoidMeasurementProcessor_BlurSize_Desc" xml:space="preserve">
<value>Gaussian blur kernel size (odd number)</value>
</data>
<data name="VoidMeasurementProcessor_VoidLimit" xml:space="preserve">
<value>Void Limit (%)</value>
</data>
<data name="VoidMeasurementProcessor_VoidLimit_Desc" xml:space="preserve">
<value>Void rate above this limit is classified as FAIL</value>
</data>
</root>