You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Imebra库iOS集成:C++转Swift的VOILUT初始化代码求助

Imebra iOS Swift 版VOILUT转换实现代码

新版Imebra的Swift绑定对齐了C的初始化逻辑,废弃了原有setCenter、setLUT、applyOptimalVOI等实例方法,改为直接通过不同参数的构造器初始化ImebraVOILUT实例,对应C的三种构造场景即可,完整替换代码如下:

if(ImebraColorTransformsFactory.isMonochrome(colorSpace)) {
    let vois: [ImebraVOIDescription] = try dataSet.getVOIs() as! [ImebraVOIDescription]
    
    var luts = [ImebraLUT]()
    var scanLuts: UInt32 = 0
    while(true){
        do {
            luts.append(try dataSet.getLUT(ImebraTagId(group: 0x0028, tag: 0x3010), item: scanLuts))
            scanLuts = scanLuts + 1
        } catch {
            print("vois loop exit")
            break;
        }
    }
    
    // 你需要的三个分支正确实现
    let voilutTransform: ImebraVOILUT
    if (!vois.isEmpty) {
        // 对应C++用VOIDescription构造VOILUT的逻辑
        voilutTransform = ImebraVOILUT(voi: vois[0])
    } else if (!luts.isEmpty) {
        // 对应C++用LUT构造VOILUT的逻辑
        voilutTransform = ImebraVOILUT(lut: luts[0])
    } else {
        // 对应C++生成最优VOI后构造的逻辑
        let optimalVoi = ImebraVOILUT.getOptimalVOI(image, inputTopLeftX: 0, inputTopLeftY: 0, inputWidth: width, inputHeight: height)
        voilutTransform = ImebraVOILUT(voi: optimalVoi)
    }
    
    chain?.add(voilutTransform)
}

注意事项

  • 不要提前初始化无参数的ImebraVOILUT实例,新版无参构造已不推荐使用,所有参数在构造时传入即可
  • getOptimalVOI是ImebraVOILUT的类方法,调用后返回ImebraVOIDescription实例,直接传入构造器即可
  • 上述代码的构造器命名和Imebra 5.x版本的Swift绑定完全对齐,如果你使用的是其他版本,可根据头文件提示微调构造器参数标签即可

内容的提问来源于stack exchange,提问作者Subrata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:09:05