Ho ricercato dappertutto per trovare un kernel che esegua il thresholding adattivo su iOS. Sfortunatamente non capisco il linguaggio del kernel o la logica dietro di esso. Qui di seguito, ho trovato una routine che esegue thresholding (https://gist.github.com/xhruso00/a3f8a9c8ae7e33b8b23d)Soglia adattiva 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"
"}";
E 'possibile riscrivere questo in un kernel soglia adattativa? L'immagine che sto fornendo è stata trasformata in B & W ed è già stata sfocata. Ci sono risorse a cui potresti indirizzarmi? Mi piacerebbe restare con CoreImage mentre il mio intero stack è costruito attorno ad esso.
Edit: Il miglior esempio/di riferimento da quello che sto cercando di realizzare è stato implementato in GPUImageAdaptiveThresholdFilter di GPUImage - https://github.com/BradLarson/GPUImage/blob/c5f0914152419437869c35e29858773b1a06083c/framework/Source/GPUImageAdaptiveThresholdFilter.m
Pascal, grazie per la risposta. Qualche idea su come implementarlo anche in CoreImage? https://github.com/ctodobom/OpenNoteScanner/blob/master/app/src/main/java/com/todobom/opennotescanner/ImageProcessor.java#L409 – mmackh
Hai menzionato una costante di 0,01 ma hai 0.001, questo è un sbaglio? Inoltre, applicate questa costante a imageLuma o alla soglia luma (supponendo che volevo lettere bianche con sfondo nero) – Pochi
0.01 e 0.001 non sembra fare troppa differenza. Potete provare diversi valori per soddisfare le vostre necessità . – triiiiista