Skip to content

emircbngl/CameraAPI-Julia

Repository files navigation

OberonA2 — Hybrid Görüntü İşleme Sistemi

GUI: Oberon A2 (CameraViewer.Mod)
Görüntü İşleme: Julia (libdhmprocessing.so/.dll)


Mimari

CameraViewer.Mod (Oberon GUI + WM pencereleri)
  └─ FrameReceived() → ComputeAmplitude / Phase / Spectrum / Recon
       └─ JuliaProcessing.Mod (Oberon FFI bridge)
            └─ libdhmprocessing.dll / .so (Julia + FFTW)

Julia kütüphanesi yoksa Oberon yedek hesaplamalarına otomatik düşer.


Dizin Yapısı

CameraAPI-Package/
└── source/
    ├── NiImaq.Mod              NI-IMAQ FFI (değişmedi)
    ├── CameraAPI.Mod           Kamera oturumu (değişmedi)
    ├── CameraViewer.Mod        GUI + Julia entegrasyonu ✏️
    └── JuliaProcessing.Mod     Julia DLL yükleyici (YENİ) 🆕

CameraAPI-Julia/
├── Project.toml
├── build_lib.jl               PackageCompiler build scripti
├── precompile.jl               AOT precompile execution
└── src/
    ├── CameraAPI.jl            Ana modül
    └── Processing.jl           @ccallable C-ABI export'ları

Kurulum

Adım 1 — Julia Kütüphanesini Derle

cd CameraAPI-Julia
julia --project=. build_lib.jl

Üretilen kütüphane:

  • Linux/macOS: build/lib/libdhmprocessing.so
  • Windows: build/lib/libdhmprocessing.dll

İlk derleme ~5–10 dk sürebilir (PackageCompiler AOT).

Adım 2 — Kütüphaneyi OberonA2'ye Yerleştir

Kütüphaneyi OberonA2'nin çalışma dizinine kopyala:

# Windows
copy build\lib\libdhmprocessing.dll  C:\OberonA2\

# Linux/macOS
cp build/lib/libdhmprocessing.so   ~/OberonA2/

Adım 3 — Oberon Modüllerini Derle

OberonA2 içinde sırayla:

Compiler.Compile source/NiImaq.Mod ~
Compiler.Compile source/CameraAPI.Mod ~
Compiler.Compile source/JuliaProcessing.Mod ~
Compiler.Compile source/CameraViewer.Mod ~

KernelLog'da şunu görmelisiniz:

[JuliaProcessing] libdhmprocessing.dll yüklendi.
[JuliaProcessing] Tüm fonksiyonlar hazır.

Adım 4 — Çalıştır

CameraViewer.Open "img0" ~

C-ABI Fonksiyonlar

Fonksiyon Girdi Algoritma
dhm_init() Julia runtime başlat
dhm_shutdown() Temizlik
dhm_compute_amplitude(src, dst, w, h) BGRA8888 √(R²+G²+B²)/√3
dhm_compute_phase(src, dst, w, h) BGRA8888 atan2(G-R, B-R) → HSV
dhm_compute_spectrum(src, dst, w, h) BGRA8888 log|FFT₂D| (FFTW)
dhm_compute_recon(src, dst, w, h, z, λ, px) BGRA8888 ASM (stub)

Fallback Davranışı

libdhmprocessing yüklenemediyse JuliaProcessing.Loaded = FALSE olur.
CameraViewer.Mod otomatik olarak orijinal Oberon hesaplamalarına döner —
sistem her zaman çalışmaya devam eder.

About

CameraAPI-Julia

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors