public class MPSImageEDLines extends MPSKernel
The MPSImageEDLInes class implements the EDLines line segmenting algorithm using edge-drawing (ED) described here https://ieeexplore.ieee.org/document/6116138
The EDLInes algorithm consists of 5 steps, the first 4 of which describe the ED algorithm: 1. Blur the source image using a Gaussian blur with a sigma parameter 2. Use horizontal and vertical Sobel filters to find a gradient magnitude and direction. G = sqrt(Sx^2 + Sy^2) G_ang = arctan(Sy / Sx) 3. Compute anchor points, points with a high probability of being edge pixels. Anchor points are local maxima, in the gradient image that lie on row and column multiples of the detailRatio. This parameter effectively downsamples the gradient image, and directly influences the density of anchor points. A larger detailRatio results in fewer fine grained details, leaving long, main lines. 4. Anchor points are traced in a forward and backward direction along the gradient direction, until the gradient falls below some gradientThreshold parameter or the edge of the image is reached. The paths traced become an edge map of the image. 5. Points in the edges are fit to a line), and extended along the edge until the line error crosses a lineErrorThreshold. Lines which are beyond a minimum length are labelled line segments and will be outputs of the algorithm.
NSObject.Function_instanceMethodForSelector_ret, NSObject.Function_methodForSelector_ret| Modifier | Constructor and Description |
|---|---|
protected |
MPSImageEDLines(org.moe.natj.general.Pointer peer) |
| Modifier and Type | Method and Description |
|---|---|
boolean |
_supportsSecureCoding()
This property must return YES on all classes that allow secure coding.
|
static boolean |
accessInstanceVariablesDirectly() |
static MPSImageEDLines |
alloc() |
static MPSImageEDLines |
allocWithZone(org.moe.natj.general.ptr.VoidPtr zone) |
static boolean |
automaticallyNotifiesObserversForKey(java.lang.String key) |
static void |
cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget) |
static void |
cancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget,
org.moe.natj.objc.SEL aSelector,
java.lang.Object anArgument) |
static NSArray<java.lang.String> |
classFallbacksForKeyedArchiver() |
static org.moe.natj.objc.Class |
classForKeyedUnarchiver() |
MTLRegion |
clipRectSource()
[@property] clipRectSource
|
static java.lang.String |
debugDescription_static() |
static java.lang.String |
description_static() |
char |
detailRatio()
[@property] detailRatio
|
void |
encodeToCommandBufferSourceTextureDestinationTextureEndpointBufferEndpointOffset(MTLCommandBuffer commandBuffer,
MTLTexture source,
MTLTexture dest,
MTLBuffer endpointBuffer,
long endpointOffset)
Encode the filter to a command buffer using a MTLComputeCommandEncoder.
|
float |
gaussianSigma()
[@property] sigma
|
float |
gradientThreshold()
[@property] gradientThreshold
|
static long |
hash_static() |
MPSImageEDLines |
init() |
MPSImageEDLines |
initWithCoder(NSCoder aDecoder)
NS_DESIGNATED_INITIALIZER
|
MPSImageEDLines |
initWithCoderDevice(NSCoder aDecoder,
java.lang.Object device)
NSSecureCoding compatability
|
MPSImageEDLines |
initWithDevice(java.lang.Object device)
Standard init with default properties per filter type
|
MPSImageEDLines |
initWithDeviceGaussianSigmaMinLineLengthMaxLinesDetailRatioGradientThresholdLineErrorThresholdMergeLocalityThreshold(MTLDevice device,
float gaussianSigma,
char minLineLength,
long maxLines,
char detailRatio,
float gradientThreshold,
float lineErrorThreshold,
float mergeLocalityThreshold)
Initialize an EDLines kernel on a given device with specified parameters.
|
static NSObject.Function_instanceMethodForSelector_ret |
instanceMethodForSelector(org.moe.natj.objc.SEL aSelector) |
static NSMethodSignature |
instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector) |
static boolean |
instancesRespondToSelector(org.moe.natj.objc.SEL aSelector) |
static boolean |
isSubclassOfClass(org.moe.natj.objc.Class aClass) |
static NSSet<java.lang.String> |
keyPathsForValuesAffectingValueForKey(java.lang.String key) |
float |
lineErrorThreshold()
[@property] lineErrorThreshold
|
long |
maxLines()
[@property] maxLines
|
float |
mergeLocalityThreshold()
[@property] mergeLocalityThreshold
|
char |
minLineLength()
[@property] minLineLength
|
static MPSImageEDLines |
new_objc() |
static boolean |
resolveClassMethod(org.moe.natj.objc.SEL sel) |
static boolean |
resolveInstanceMethod(org.moe.natj.objc.SEL sel) |
void |
setClipRectSource(MTLRegion value)
[@property] clipRectSource
|
void |
setDetailRatio(char value)
[@property] detailRatio
|
void |
setGradientThreshold(float value)
[@property] gradientThreshold
|
void |
setLineErrorThreshold(float value)
[@property] lineErrorThreshold
|
void |
setMaxLines(long value)
[@property] maxLines
|
void |
setMergeLocalityThreshold(float value)
[@property] mergeLocalityThreshold
|
void |
setMinLineLength(char value)
[@property] minLineLength
|
static void |
setVersion_static(long aVersion) |
static org.moe.natj.objc.Class |
superclass_static() |
static boolean |
supportsSecureCoding() |
static long |
version_static() |
copyWithZone, copyWithZoneDevice, device, encodeWithCoder, label, options, setLabel, setOptionsaccessibilityActivate, accessibilityActivationPoint, accessibilityAssistiveTechnologyFocusedIdentifiers, accessibilityAttributedHint, accessibilityAttributedLabel, accessibilityAttributedUserInputLabels, accessibilityAttributedValue, accessibilityContainerType, accessibilityCustomActions, accessibilityCustomRotors, accessibilityDecrement, accessibilityDragSourceDescriptors, accessibilityDropPointDescriptors, accessibilityElementAtIndex, accessibilityElementCount, accessibilityElementDidBecomeFocused, accessibilityElementDidLoseFocus, accessibilityElementIsFocused, accessibilityElements, accessibilityElementsHidden, accessibilityFrame, accessibilityHint, accessibilityIncrement, accessibilityLabel, accessibilityLanguage, accessibilityNavigationStyle, accessibilityPath, accessibilityPerformEscape, accessibilityPerformMagicTap, accessibilityRespondsToUserInteraction, accessibilityScroll, accessibilityTextualContext, accessibilityTraits, accessibilityUserInputLabels, accessibilityValue, accessibilityViewIsModal, addObserverForKeyPathOptionsContext, attemptRecoveryFromErrorOptionIndex, attemptRecoveryFromErrorOptionIndexDelegateDidRecoverSelectorContextInfo, autoContentAccessingProxy, awakeAfterUsingCoder, awakeFromNib, class_objc, classForCoder, classForKeyedArchiver, copy, dealloc, debugDescription, description, dictionaryWithValuesForKeys, didChangeValueForKey, didChangeValueForKeyWithSetMutationUsingObjects, didChangeValuesAtIndexesForKey, doesNotRecognizeSelector, fileManagerShouldProceedAfterError, fileManagerWillProcessPath, finalize_objc, forwardingTargetForSelector, forwardInvocation, hash, indexOfAccessibilityElement, isAccessibilityElement, isEqual, isKindOfClass, isMemberOfClass, isProxy, methodForSelector, methodSignatureForSelector, mutableArrayValueForKey, mutableArrayValueForKeyPath, mutableCopy, mutableOrderedSetValueForKey, mutableOrderedSetValueForKeyPath, mutableSetValueForKey, mutableSetValueForKeyPath, observationInfo, observeValueForKeyPathOfObjectChangeContext, performSelector, performSelectorInBackgroundWithObject, performSelectorOnMainThreadWithObjectWaitUntilDone, performSelectorOnMainThreadWithObjectWaitUntilDoneModes, performSelectorOnThreadWithObjectWaitUntilDone, performSelectorOnThreadWithObjectWaitUntilDoneModes, performSelectorWithObject, performSelectorWithObjectAfterDelay, performSelectorWithObjectAfterDelayInModes, performSelectorWithObjectWithObject, prepareForInterfaceBuilder, provideImageDataBytesPerRowOrigin_Size_UserInfo, removeObserverForKeyPath, removeObserverForKeyPathContext, replacementObjectForCoder, replacementObjectForKeyedArchiver, respondsToSelector, self, setAccessibilityActivationPoint, setAccessibilityAttributedHint, setAccessibilityAttributedLabel, setAccessibilityAttributedUserInputLabels, setAccessibilityAttributedValue, setAccessibilityContainerType, setAccessibilityCustomActions, setAccessibilityCustomRotors, setAccessibilityDragSourceDescriptors, setAccessibilityDropPointDescriptors, setAccessibilityElements, setAccessibilityElementsHidden, setAccessibilityFrame, setAccessibilityHint, setAccessibilityLabel, setAccessibilityLanguage, setAccessibilityNavigationStyle, setAccessibilityPath, setAccessibilityRespondsToUserInteraction, setAccessibilityTextualContext, setAccessibilityTraits, setAccessibilityUserInputLabels, setAccessibilityValue, setAccessibilityViewIsModal, setIsAccessibilityElement, setNilValueForKey, setObservationInfo, setShouldGroupAccessibilityChildren, setValueForKey, setValueForKeyPath, setValueForUndefinedKey, setValuesForKeysWithDictionary, shouldGroupAccessibilityChildren, superclass, validateValueForKeyError, validateValueForKeyPathError, valueForKey, valueForKeyPath, valueForUndefinedKey, willChangeValueForKey, willChangeValueForKeyWithSetMutationUsingObjects, willChangeValuesAtIndexesForKeypublic static boolean accessInstanceVariablesDirectly()
public static MPSImageEDLines alloc()
public static MPSImageEDLines allocWithZone(org.moe.natj.general.ptr.VoidPtr zone)
public static boolean automaticallyNotifiesObserversForKey(java.lang.String key)
public static void cancelPreviousPerformRequestsWithTarget(java.lang.Object aTarget)
public static void cancelPreviousPerformRequestsWithTargetSelectorObject(java.lang.Object aTarget,
org.moe.natj.objc.SEL aSelector,
java.lang.Object anArgument)
public static NSArray<java.lang.String> classFallbacksForKeyedArchiver()
public static org.moe.natj.objc.Class classForKeyedUnarchiver()
public MTLRegion clipRectSource()
The source rectangle to use when reading data.
A MTLRegion that indicates which part of the source to read. If the clipRectSource does not lie completely within the source image, the intersection of the image bounds and clipRectSource will be used. The clipRectSource replaces the MPSUnaryImageKernel offset parameter for this filter. The latter is ignored. Default: MPSRectNoClip, use the entire source texture.
public static java.lang.String debugDescription_static()
public static java.lang.String description_static()
public char detailRatio()
Read-write value used to set the detailRatio to use in the EDLines algorithm Default is 32
public void encodeToCommandBufferSourceTextureDestinationTextureEndpointBufferEndpointOffset(MTLCommandBuffer commandBuffer, MTLTexture source, MTLTexture dest, MTLBuffer endpointBuffer, long endpointOffset)
The filter will not begin to execute until after the command buffer has been enqueued and committed.
commandBuffer - A valid MTLCommandBuffer.source - A valid MTLTexture containing the source image for the filterdest - A valid MTLTexture containing the destination image for the filter. If not nil, the output will be the edges
found through the Edge Drawing algorithm.endpointBuffer - A valid MTLBuffer to receive the line segment count and endpoint results.endpointOffset - Byte offset into endpoint buffer at which to write the line segment endpoint results. Must be a multiple of 32 bytes.
The total line segment count and the line segment endpoints are written to the endpoint buffer. The count
is written as a uint32_t at the start of the buffer. The line segments are written to the endpoint buffer as
start and end pixel coordinates of the segment. Coordinates are stored as unsigned short pairs, and a
single line segment will consist of two pairs, or four total unsigned shorts. The endpoint buffer size must
be >= 4 * maxLines * sizeof(unsigned short) + sizeof(uint32_t).public float gaussianSigma()
Read-only sigma value used in performing Gaussian blur of the image. Default is 2.0
public float gradientThreshold()
Read-write value used to set the threshold for a pixel to be considered an edge Default is 0.2
public static long hash_static()
public MPSImageEDLines init()
public MPSImageEDLines initWithCoder(NSCoder aDecoder)
NSCodinginitWithCoder in interface NSCodinginitWithCoder in class MPSKernelpublic MPSImageEDLines initWithCoderDevice(NSCoder aDecoder, java.lang.Object device)
While the standard NSSecureCoding/NSCoding method -initWithCoder: should work, since the file can't know which device your data is allocated on, we have to guess and may guess incorrectly. To avoid that problem, use initWithCoder:device instead.
initWithCoderDevice in class MPSKernelaDecoder - The NSCoder subclass with your serialized MPSKerneldevice - The MTLDevice on which to make the MPSKernelpublic MPSImageEDLines initWithDevice(java.lang.Object device)
MPSKernelinitWithDevice in class MPSKerneldevice - The device that the filter will be used on. May not be NULL.public MPSImageEDLines initWithDeviceGaussianSigmaMinLineLengthMaxLinesDetailRatioGradientThresholdLineErrorThresholdMergeLocalityThreshold(MTLDevice device, float gaussianSigma, char minLineLength, long maxLines, char detailRatio, float gradientThreshold, float lineErrorThreshold, float mergeLocalityThreshold)
device - The device the filter will run ongaussianSigma - The standard deviation of gaussian blur filter.
Gaussian weight, centered at 0, at integer grid i is given asminLineLength - The minimum length of output line segments.maxLines - The maximum amount of lines for the EDLines algorithm to output. The size of the
endpointBuffer supplied at encode must be >= maxLines * 4 * sizeof(unsigned short) + sizeof(uint32_t).detailRatio - The detailRatio to use in the EDLines algorithm, which
inversely effects the number of anchor pointsgradientThreshold - Any pixel with a gradient below the gradientThreshold will
not be considerd an edgelineErrorThreshold - The limit of how much error a line segment can have relative
to the edge it representsmergeLocalityThreshold - Determines how many pixels apart two lines can deviate spatially and still be merged.
This value is normalized to the diagonal length of the image.public static NSObject.Function_instanceMethodForSelector_ret instanceMethodForSelector(org.moe.natj.objc.SEL aSelector)
public static NSMethodSignature instanceMethodSignatureForSelector(org.moe.natj.objc.SEL aSelector)
public static boolean instancesRespondToSelector(org.moe.natj.objc.SEL aSelector)
public static boolean isSubclassOfClass(org.moe.natj.objc.Class aClass)
public static NSSet<java.lang.String> keyPathsForValuesAffectingValueForKey(java.lang.String key)
public float lineErrorThreshold()
Read-write value used to set the limit on error for a line segment relative to the edge it fits Default is 0.05
public long maxLines()
Read-write value used to set the max number of line segments to be written out. The endpointBuffer at encode must be >= maxLines * 4 * sizeof(unsigned short) + sizeof(uint32_t). Default is 256
public float mergeLocalityThreshold()
Read-write value used to set how many pixels apart two lines can deviate spatially and still be merged. Default is 0.0025
public char minLineLength()
Read-write value used to set the minimum length of a line segment. Default is 32
public static MPSImageEDLines new_objc()
public static boolean resolveClassMethod(org.moe.natj.objc.SEL sel)
public static boolean resolveInstanceMethod(org.moe.natj.objc.SEL sel)
public void setClipRectSource(MTLRegion value)
The source rectangle to use when reading data.
A MTLRegion that indicates which part of the source to read. If the clipRectSource does not lie completely within the source image, the intersection of the image bounds and clipRectSource will be used. The clipRectSource replaces the MPSUnaryImageKernel offset parameter for this filter. The latter is ignored. Default: MPSRectNoClip, use the entire source texture.
public void setDetailRatio(char value)
Read-write value used to set the detailRatio to use in the EDLines algorithm Default is 32
public void setGradientThreshold(float value)
Read-write value used to set the threshold for a pixel to be considered an edge Default is 0.2
public void setLineErrorThreshold(float value)
Read-write value used to set the limit on error for a line segment relative to the edge it fits Default is 0.05
public void setMaxLines(long value)
Read-write value used to set the max number of line segments to be written out. The endpointBuffer at encode must be >= maxLines * 4 * sizeof(unsigned short) + sizeof(uint32_t). Default is 256
public void setMergeLocalityThreshold(float value)
Read-write value used to set how many pixels apart two lines can deviate spatially and still be merged. Default is 0.0025
public void setMinLineLength(char value)
Read-write value used to set the minimum length of a line segment. Default is 32
public static void setVersion_static(long aVersion)
public static org.moe.natj.objc.Class superclass_static()
public static boolean supportsSecureCoding()
public boolean _supportsSecureCoding()
NSSecureCoding_supportsSecureCoding in interface NSSecureCoding_supportsSecureCoding in class MPSKernelpublic static long version_static()