Ich habe überall recherchiert, um einen Kernel zu finden, der adaptive Thresholding auf iOS durchführt. Leider verstehe ich die Kernelsprache oder die Logik dahinter nicht. Im Folgenden habe ich eine Routine gefunden haben, die Schwellwertoperation (https://gist.github.com/xhruso00/a3f8a9c8ae7e33b8b23d)Adaptive Schwelle CIKernel/CIFilter iOS
static NSString * const kKernelSource = @"kernel vec4 thresholdKernel(sampler image)\n"
"{\n"
" float inputThreshold = 0.05;\n"
" float pass = 1.0;\n"
" float fail = 0.0;\n"
" const vec4 vec_Y = vec4(0.299, 0.587, 0.114, 0.0);\n"
" vec4 src = unpremultiply(sample(image, samplerCoord(image)));\n"
" float Y = dot(src, vec_Y);\n"
" src.rgb = vec3(compare(Y - inputThreshold, fail, pass));\n"
" return premultiply(src);\n"
"}";
Ist es möglich, neu zu schreiben, diese in eine adaptive Schwellwertbildung Kernel führt? Das Bild, das ich ihm zuführe, wurde in B & W umgewandelt und ist bereits unscharf geworden. Gibt es irgendwelche Ressourcen, auf die Sie mich hinweisen könnten? Ich würde gerne bei CoreImage bleiben, da mein gesamter Stack darauf aufgebaut ist.
Edit: Das beste Beispiel/Referenz aus, was ich versuche in GPUImage die umgesetzt wurde GPUImageAdaptiveThresholdFilter zu erreichen - https://github.com/BradLarson/GPUImage/blob/c5f0914152419437869c35e29858773b1a06083c/framework/Source/GPUImageAdaptiveThresholdFilter.m
Pascal, ich danke Ihnen für Ihre Antwort. Irgendeine Idee, wie Sie dies auch in CoreImage implementieren können? https://github.com/ctodobom/OpenNoteScanner/blob/master/app/src/main/java/com/todobom/opennotescanner/ImageProcessor.java#L409 – mmackh
Sie erwähnten eine Konstante von 0,01, aber Sie haben 0,001, ist dies ein Fehler? Auch wenden Sie diese Konstante auf die imageLuma oder die Schwelle Luma an (vorausgesetzt, ich wollte weiße Buchstaben mit schwarzem Hintergrund. – Pochi
0,01 und 0,001 scheint nicht zu viel Unterschied zu machen. Sie können verschiedene Werte versuchen, um Ihre Bedürfnisse zu erfüllen . – triiiiista