Questo documento descrive il modello di elaborazione immagini di LaserBase. L’obiettivo è comprenderne il funzionamento: quali rappresentazioni esistono, in quale ordine viene eseguita la pipeline e come il programma passa dall’immagine RAW al G-code.
Non è una specifica per sviluppatori. L’attenzione è posta su un modello mentale utilizzabile e tecnicamente accurato.
LaserBase non è costruito soltanto attorno al dither binario.
Il sistema supporta diverse strategie di elaborazione:
Per questo motivo, la domanda centrale non è soltanto quale algoritmo di dither scegliere, ma quale rappresentazione immagine produce la modalità scelta e quale tipo di G-code ne deriva.
RAW è l’immagine sorgente caricata.
È collegata a:
Il crop non è definito sull’immagine già elaborata, ma nello spazio RAW.
È l’immagine già:
BASE dipende dalla modalità.
Non è corretto insegnarlo come sempre binario.
In depth mode il sistema mantiene due raster elaborati:
La preview può passare da uno all’altro, e l’export è costruito in due passaggi.
L’utente fornisce:
Il programma non disegna direttamente un raster a partire da questi dati. Calcola invece un raster reale allineato a ciò che la macchina può riprodurre passo per passo.
Se le linee sull’asse di passo possono essere collocate solo a intervalli specifici, il pitch reale e il DPI effettivo vengono adattati a tale geometria consentita.
Il DPI effettivo è:
DPI effettivo = 25.4 / real_pitch_mm
Può differire dal DPI richiesto.
Prima dell’elaborazione il sistema decide:
Se il numero richiesto di linee o colonne è maggiore di quanto l’immagine sorgente possa fornire direttamente, la decisione diventa REPAIR. Altrimenti è BASE.
rotate_90 è una trasformazione geometrica reale.
Non è un trucco di preview. Cambia l’orientamento dell’immagine sorgente. Per questo motivo, i passaggi seguenti lavorano già sull’immagine RAW ruotata:
Preview rotate back è un livello di visualizzazione separato.
Trasforma solo la vista. Non modifica:
Le due rotazioni restano quindi separate:
rotate_90 = geometria di elaborazioneIl crop è definito sull’immagine sorgente affinché il ritaglio avvenga il prima possibile.
Questo significa:
Con crop circolare, la geometria deve restare quadrata. Questo vincolo è imposto anche a livello UI.
La modalità di elaborazione è la scelta centrale del sistema.
Definisce quale rappresentazione assume BASE, che cosa significa la preview e come il G-code traduce i dati raster in potenza e movimento.
In questa modalità il raster resta in scala di grigi. Il generatore G-code mappa il tono del pixel su valori PWM.
Non è un’incisione on/off, ma un profilo di potenza più continuo.
Le modalità a diffusione d’errore e quelle ordinate appartengono a questo gruppo:
Qui il risultato finale è binario. A livello G-code, un pixel riceve bruciatura piena oppure nulla.
Hybrid non è una modalità di dither classica.
Parte da un’immagine in scala di grigi e aggiunge una correzione di pattern dipendente dal tono. È più forte nei mezzitoni e più debole agli estremi.
Il suo ruolo è:
In termini pratici, Hybrid colma il divario tra un grayscale troppo uniforme e un dither binario troppo duro. È utile quando è importante mantenere il tono, ma un mapping grayscale completamente liscio non fornisce abbastanza struttura.
Depth mantiene due branch separati:
Ogni branch può memorizzare il proprio stato dei controlli. La preview passa da uno all’altro e l’export genera due passaggi.
Depth è utile quando tono e struttura a punti non devono essere affidati allo stesso raster. Rispetto al semplice grayscale, offre spazio di lavoro separato per questi due ruoli.
Nella pipeline, negative viene eseguito presto.
Questo significa che i passaggi successivi di brightness, contrast, gamma e sharpening lavorano già nello spazio tonale invertito.
Entrambi operano sull’immagine di lavoro in scala di grigi.
Gamma è una correzione non lineare nello spazio tonale. Il sistema limita il valore inserito a un intervallo consentito e lo applica tramite LUT.
Lo sharpening è basato su unsharp mask.
Le operazioni di specchio fanno parte delle trasformazioni immagine e vengono eseguite dopo le modifiche tonali.
Threshold non è uno slider universale.
Influenza solo la soglia usata dalle modalità binarie a diffusione d’errore. In Bayer, halftone clustered, grayscale e hybrid, il suo significato è diverso o non materialmente rilevante.
Non è un algoritmo di dither separato, ma un’alternanza della direzione di propagazione dell’errore riga per riga.
Il suo ruolo:
È una fase di pulizia applicata all’output raster binario.
Non è un filtro immagine generale. Il suo scopo è rimuovere pixel singoli isolati che sporgono rispetto all’intorno.
L’ordine logico è:
rotate_90 opzionalenegativecontrast + brightnessgammaradius + amount)mirror_x / mirror_yone_pixel_off opzionaleLe conseguenze principali sono:
rotate_90 viene applicato prima del cropnegative non è dopo il ditheringQuesto ordine è importante perché il comportamento dei controlli dipende da esso. La stessa impostazione produce risultati diversi a seconda del punto in cui entra nella pipeline.
La preview di destra è costruita a partire da _right_view_mode e dal
branch elaborato attivo.
Questa preview non è sempre un’immagine diretta 1:1 dell’incisione finale. In dither binario e in depth mode mostra soprattutto la struttura di elaborazione e il carattere del raster, più che la risposta finale del materiale.
In pratica questo significa:
Questo cambia solo l’interpolazione di visualizzazione. L’immagine elaborata non viene modificata.
Il fullscreen usa lo stesso branch preview attivo della normale vista a destra, ma in scala più grande e più facile da ispezionare.
Gli input sono:
Il sistema di raccomandazione aggrega record dal database.
Auto non è soltanto una formula “potenza proporzionale alla velocità”.
La logica combina due tipi di raccomandazione:
L’output finale può fondere entrambe.
Il fallback non è una risalita gerarchica arbitraria.
Il sistema:
Questo definisce i limiti del comportamento di fallback.
In modalità Auto, Speed e Max power raccomandati sono legati a una base. Se l’utente modifica uno dei due, l’altro cambia attorno a quella base.
La raccomandazione è più forte quando proviene da un match esatto. Con fallback safe-stop resta un punto di partenza più protetto, ma meno diretto per il materiale specifico.
Il sistema di raccomandazione si basa sui record memorizzati nel database. Questi record non sono limitati a dati predefiniti: l’utente può aggiungere voci proprie.
I dati salvati possono essere esportati e ricaricati in un altro ambiente. I file chiave importati aggiornano il set di dati preparato centralmente.
La formula dell’overscan è:
overscan ≈ 1.15 × v² / (2a)
dove:
v è la velocità di scansione in mm/sa è l’accelerazione dell’asse attivo in mm/s²Il fattore 1.15 agisce come margine di sicurezza.
Dal punto di vista dell’export esistono tre stati:
In modalità manual, il valore inserito sovrascrive il calcolo automatico.
Qui il generatore G-code mappa i valori dei pixel su una potenza continua:
power = s_min + (s_max - s_min) × tone
Per questo motivo, min_power agisce come limite inferiore del mapping
tonale.
Nelle modalità binarie, i pixel neri ricevono il livello di potenza più alto e i pixel bianchi ricevono zero.
In questo caso, min_power non è l’elemento principale di controllo
della valutazione binaria.
In depth mode il programma:
Il secondo passaggio eredita anche alcuni valori di stato export dal primo, quindi non si tratta di due export completamente indipendenti.
L’export frame è più di una semplice casella di controllo.
Quando frame è attivo:
Con crop circolare, il percorso frame è circolare; altrimenti è rettangolare.
Salva l’immagine elaborata attualmente attiva.
In depth mode questo significa che l’output salvato non è un “BASE” astratto, ma il branch attivo in quel momento.
L’azione di salvataggio memorizza anche lo stato del workspace basato su sidecar.
Contenuto tipico:
Reload ricostruisce il workspace e poi esegue di nuovo l’elaborazione.
Per questo motivo, save/reload ha natura di sessione, non solo di record.
Sender non è soltanto streaming grezzo.
Funzioni rilevanti:
Dal punto di vista officina, questo conta perché anche frame e posizionamento sono processi a più stati in Sender.
In breve:
rotate_90 è una vera operazione geometricaQuesto fornisce un quadro corretto e utilizzabile di come funziona LaserBase.