Skip to content

通道分离、合并

需求: 在 ct 图上贴出病变区域

没什么技术含量,方便有需要的快速cv

/**
 * @brief GenerateRendering
 * @param srcImage 输入 背景图
 * @param IC 输入 核心梗死区图像
 * @param IP 输入 梗死区图像
 * @param rending 生成最终渲染结果
 * @return 是否成功计算完成
 */
bool  GenerateRendering(const Mat &srcImage, const Mat &IC, const Mat &IP, Mat &rending) {
    if(CV_8UC3  != srcImage.type() ||
            CV_8UC1  != IC.type() ||
            CV_8UC1  != IP.type()) {
        qDebug() << "GenerateRendering type error";
        return false;
    }
    Mat mask1, mask2;
    cv::cvtColor(IC, mask1, COLOR_GRAY2RGB);
    cv::cvtColor(IP, mask2, COLOR_GRAY2RGB);
    std::vector<cv::Mat> channels1, channels2, channels3;
    split(mask1, channels1);
    split(mask2, channels2);
    split(srcImage, channels3);
    {
        // Fake
        cv::bitwise_and(channels1[1], channels2[2], channels1[1]);
    }
    channels3[1] += channels1[1] * 0.5;
    channels3[2] += channels2[2] * 0.5;
    merge(channels3, rending);
    return true;
}