11 彩色增强

本文介绍了MATLAB中的彩色增强技术,包括密度分割法和空间域灰度级-彩色变换。通过实例展示了如何使用grayslice函数进行灰度分层彩色增强,并解释了颜色映像的工作原理。此外,还提供了空间域变换的例子,控制红绿蓝三种基色以创建不同的彩色图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更多MATLAB图像处理视频请点击  http://study.163.com/course/courseMain.htm?courseId=1003594013  

   彩色增强在图像处理中应用十分广泛且效果显著。人的视觉系统对彩色相当敏感,人眼一般能区分的灰度级只有二十多个,而对不同亮度和色调的彩色图像分辨能力可达到灰度分辨能力的百倍以上。彩色增强就是根据人的这个特点,将彩色用于图像增强之中,从而提高了图像的可分辨性。

1.密度分割法

   密度分割法,也叫做密度分层,它是对图像亮度范围进行分割,使一定亮度间隔对应于某一类地物或几类地物从而有利于图像的增强和分类。如图 5-25 所
示,它是把黑白图像的灰度级从 0(黑)到 M0(白)分成 N 个区间 L i ,i=1,2,⋯,N。给每个区间 L i 指定一种彩色 C i ,这样,便可以把一幅灰度图像变成一幅伪彩色图像。此法比较直观简单,缺点是变换出的彩色数目有限。


grayslice(I,n):灰度分层法彩色图像处理函数,I为输入的灰度图像,n为分从层数

例:

I=imread('m83.tif');
imshow(I);
title('原图')
X=grayslice(I,16);
figure,imshow(X,hot(16));
title('彩色增强后的图')


附:关于MATLAB颜色的显示问题

### YOLOv11 数据集增强技术和方法 YOLOv11作为一种高效的目标检测算法,在2024年发布时引入了一系列先进的数据增强技术来提升模型性能和泛化能力。这些技术不仅有助于提高训练效率,还能显著改善模型在实际应用中的表现。 #### 一、马赛克增强(Mosaic) 马赛克增强是一种通过组合四张不同图片形成一张新图的技术。这种方法可以增加样本多样性,使得模型能够更好地适应复杂背景下的目标检测任务[^1]。 ```python def mosaic_augmentation(image_list, label_list): # 假设image_list中有四个图像路径,label_list对应标签 images = [] labels = [] for i in range(4): img = cv2.imread(image_list[i]) lbl = np.load(label_list[i]) # 这里假设标签是以numpy数组形式存储 images.append(img) labels.append(lbl) # 创建一个新的空白画布用于拼接最终的mosaic图像 h, w = images[0].shape[:2] canvas = np.zeros((h * 2, w * 2, 3), dtype=np.uint8) # 将四张图片按位置放置到canvas上 positions = [(0, 0), (w, 0), (0, h), (w, h)] for pos, image in zip(positions, images): x_offset, y_offset = pos canvas[y_offset:y_offset+h, x_offset:x_offset+w] = image return canvas, merge_labels(labels) # 合并后的标签信息需要进一步处理以适配新的坐标系 ``` #### 二、混合增强(Mixup) 混合增强通过对两张原始图片及其对应的标注框按照一定比例线性插值得到一组新的训练样例。这种方式可以在不改变原有类别分布的情况下有效扩充数据量。 ```python import random def mixup_augmentation(image_a, boxes_a, image_b, boxes_b, alpha=0.2): lam = np.random.beta(alpha, alpha) height = max(image_a.shape[0], image_b.shape[0]) width = max(image_a.shape[1], image_b.shape[1]) mixed_img = np.zeros([height, width, 3], dtype='float32') mixed_img[:image_a.shape[0], :image_a.shape[1]] += image_a.astype('float32') * lam mixed_img[:image_b.shape[0], :image_b.shape[1]] += image_b.astype('float32') * (1-lam) mixed_boxes = np.vstack((boxes_a*lam, boxes_b*(1-lam))) return mixed_img.astype(np.uint8), mixed_boxes ``` #### 三、随机扰动(Random Perspective) 随机视角变换是对输入图像施加仿射变换或其他几何变形的操作,比如旋转、缩放和平移等。这种做法可以让模型学会忽略不必要的细节特征而专注于更本质的对象属性。 ```python from albumentations import RandomSizedBBoxSafeCrop, Rotate, ShiftScaleRotate transform = A.Compose([ ShiftScaleRotate(shift_limit=0.0625, scale_limit=0.1, rotate_limit=45, p=.7), ... # 可能还有其他转换操作 ]) augmented = transform(image=image, bboxes=bbox, class_labels=class_labels) image_out = augmented['image'] bboxes_out = augmented['bboxes'] # 转换后边界框的位置也会相应更新 labels_out = augmented['class_labels'] ``` #### 四、颜色扰动(HSV Augment) 对于RGB色彩空间内的每幅彩色图像而言,对其进行色调(Hue)、饱和度(Saturation)以及明度(Value)方面的微调同样属于重要的数据增强手段之一。适当的颜色抖动能使模型更加鲁棒地应对光照条件的变化。 ```python import numpy as np import cv2 def hsv_augment(image, hue_shift_limit=(-18, 18), sat_shift_limit=(0.7, 1.3), val_shift_limit=(0.7, 1.3)): hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV).astype("float") hue_shift = np.random.uniform(hue_shift_limit[0], hue_shift_limit[1]) sat_scale = np.random.uniform(sat_shift_limit[0], sat_shift_limit[1]) val_scale = np.random.uniform(val_shift_limit[0], val_shift_limit[1]) hsv_image[:, :, 0] = (hsv_image[:, :, 0] + hue_shift) % 180 hsv_image[:, :, 1] *= sat_scale hsv_image[:, :, 2] *= val_scale hsv_image[hsv_image > 255] = 255 hsv_image[hsv_image < 0] = 0 result = cv2.cvtColor(hsv_image.astype('uint8'), cv2.COLOR_HSV2BGR) return result ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术提高效率

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值