灰度图像黑白反转:X射线传感器输出灰度图反色处理需求
X射线灰度图黑区转白实现方案
你需要的效果本质是对灰度图像做像素值反转,8位灰度图的像素值范围为0(纯黑)~255(纯白),对每个像素执行新像素值 = 位深最大值 - 原像素值的运算即可实现黑白色彩翻转,同时保留原有图像的细节对比度。
以下是不同常用开发场景的实现代码:
Python + OpenCV 实现(通用图像处理场景)
import cv2 # 若直接读取传感器输出的灰度数组,可跳过读文件步骤,直接使用你的原始灰度数据 raw_gray_img = cv2.imread("本地原始灰度图路径", cv2.IMREAD_GRAYSCALE) # 执行像素反转 inverted_img = 255 - raw_gray_img # 保存处理后的图像 cv2.imwrite("处理后X射线图路径", inverted_img)
Python + PIL 实现
from PIL import Image import numpy as np raw_img = Image.open("本地原始灰度图路径").convert("L") raw_arr = np.array(raw_img) inverted_arr = 255 - raw_arr inverted_img = Image.fromarray(inverted_arr) inverted_img.save("处理后X射线图路径")
C++ + OpenCV 实现(高性能/嵌入式场景)
#include <opencv2/opencv.hpp> using namespace cv; int main() { Mat raw_gray_img = imread("本地原始灰度图路径", IMREAD_GRAYSCALE); Mat inverted_img; // 调用内置位反转函数实现效果 bitwise_not(raw_gray_img, inverted_img); imwrite("处理后X射线图路径", inverted_img); return 0; }
注意事项
- 若你使用的是16位深度的X射线原始数据,将反转公式中的255替换为16位灰度最大值65535即可。
- 该运算为逐像素线性运算,性能损耗极低,可直接集成到传感器实时输出的处理流程中。
内容的提问来源于stack exchange,提问作者MatheusCandido
相关产品推荐
相关产品推荐

