利用CImg对单通道进行复杂修改

Complex modification of single channel using CImg

本文关键字:复杂 修改 通道 CImg 单通道 利用      更新时间:2023-10-16

使用CImg图像处理库,我试图实现一些相当微不足道的东西。我想做一些复杂的修改(包括中间步骤和副本),只有HSI图像的强度通道。目前,我的方法是分离强度通道并对其进行处理。然而,最后我将不得不以某种方式将结果反馈回原始图像-我不知道如何实现这一点。

在下面的代码示例中可以看到,我尝试将修改后的强度结果转换回单通道无符号char CImg intensity_result,并简单地将其分配给原始图像的强度通道。但是当我试图显示结果时,程序崩溃了,说:

…img::HSItoRGB(): Instance is not a HSI image.

CImg<unsigned char> image = CImg<>("pic_small.jpg").normalize(0,255);
CImg<> HSIimage = image.get_RGBtoHSI();
CImg<> intensity = HSIimage.get_channel(2);
// ... intensity_modified = .... (intensity)
CImg<unsigned char> intensity_result = intensity_modified.get_normalize(0,255);
HSIimage.channel(2) = intensity_result;
HSIimage.get_HSItoRGB().display();

使用CImg<T>::draw_image()将图像绘制到另一个图像的(部分)中:

CImg<> HSI, I;  // Assuming these are already filled images.
HSI.draw_image(0,0,0,2,I); // Put content of I into HSI (at channel #2).