当前位置:首页 > 科技  > 软件

数字图像处理的图像操作

来源: 责编: 时间:2023-12-14 16:36:43 356观看
导读图像操作在计算机视觉和图像处理中发挥着至关重要的作用。这些操作对于诸如预处理、增强图像质量和启用高级算法等任务至关重要。在计算机视觉中,诸如调整大小、裁剪、调整亮度/对比度/伽玛和几何变换等操作是基础的。

图像操作在计算机视觉和图像处理中发挥着至关重要的作用。这些操作对于诸如预处理、增强图像质量和启用高级算法等任务至关重要。在计算机视觉中,诸如调整大小、裁剪、调整亮度/对比度/伽玛和几何变换等操作是基础的。它们允许进行高效的计算、提取感兴趣区域、规范化图像强度和几何校准。同样,在图像处理中,这些操作对于降采样、裁剪不需要的区域、增强可见性和质量以及执行几何操作都至关重要。mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

调整大小

在各种场景中,调整图像大小是常见的,可以实现不同的目的,例如将图像适应特定尺寸或减小文件大小。图像插值和重采样是图像处理和计算机视觉中用于调整图像大小或比例的技术。mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

图像插值

图像插值是指根据已知像素值在图像内未知位置上估算像素值的过程。不同的插值方法使用不同的方式来估算未知像素的值。mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

最近邻插值将未知像素位置的值分配为最近的已知像素值。这种方法简单但可能导致出现块状伪影和丢失细节。mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

最近邻插值mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

双线性插值考虑了四个最近的已知像素的值,并计算加权平均来估算未知像素的值。与最近邻插值相比,它产生更平滑的结果,但仍可能引入一些模糊。mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

双三次插值通过考虑更多的相邻像素并使用三次多项式来估算像素值,扩展了双线性插值。这种方法可以提供更高质量的结果,具有更平滑的过渡和更好的保留图像细节。mxO28资讯网——每日最新资讯28at.com

import cv2import numpy as npdef resize_image(image, scale, interpolation):    width = int(image.shape[1] * scale)    height = int(image.shape[0] * scale)    resized_image = cv2.resize(image, (width, height), interpolation=interpolation)    return resized_imageSCALE = 4# Load the imageimage_path = "image.png"image = cv2.imread(image_path)# Resize the image using nearest neighbor interpolationnearest_neighbor_resized = resize_image(image, scale=SCALE, interpolation=cv2.INTER_NEAREST)# Resize the image using bilinear interpolationbilinear_resized = resize_image(image, scale=SCALE, interpolation=cv2.INTER_LINEAR)# Resize the image using bicubic interpolationbicubic_resized = resize_image(image, scale=SCALE, interpolation=cv2.INTER_CUBIC)

mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

裁剪

裁剪图像的目的是去除不需要的内容或聚焦于特定的感兴趣区域。裁剪使您能够优化构图,消除干扰,并突出图像中的重要元素。去除不必要或无关的部分可以创造出视觉上吸引人且具有影响力的图像,有效地传达预期的信息或主题。mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

可以使用不同的方法来确定裁剪区域:mxO28资讯网——每日最新资讯28at.com

  • 手动选择:手动裁剪涉及对图像进行视觉检查并选择要保留的所需区域。这种方法提供了灵活性,并允许基于摄影师或设计师的艺术判断做主观决定。
  • 目标检测:基于目标检测算法的自动裁剪技术可以识别并提取图像中的特定对象或主题。这些算法分析图像并根据预定义的模式或经过训练的模型定位对象。检测到的对象可以作为裁剪区域,确保保留重要元素同时去除无关的背景或周围区域。
  • 分割:可以使用图像分割技术,如语义分割或实例分割,将图像分成有意义的区域。这些技术为不同的对象或区域分配标签或掩码,使得可以裁剪特定的部分或隔离感兴趣的特定区域。

mxO28资讯网——每日最新资讯28at.com

import cv2def crop_image(image, x, y, width, height):    cropped_image = image[y:y+height, x:x+width]    return cropped_image# Example usageimage = cv2.imread("cath.jpeg")cropped_image = crop_image(image, x=400, y=500, width=300, height=200)cv2.imshow("Cropped Image", cropped_image)cv2.waitKey(0)cv2.destroyAllWindows()

调整

mxO28资讯网——每日最新资讯28at.com

亮度和对比度:mxO28资讯网——每日最新资讯28at.com

调整亮度和对比度对于增强图像的可见性和提高视觉吸引力至关重要。调整亮度可以使图像看起来更明亮或更暗,突显曝光不足或曝光过度的区域的细节。对比度调整增强了光亮和阴暗区域之间的区别,使图像显得更清晰和更动态。mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

通过控制亮度和对比度,您可以提高图像的整体质量和可读性,确保重要的特征能够清晰可辨。mxO28资讯网——每日最新资讯28at.com

import cv2import numpy as npimage_path = "cath.jpeg"def adjust_brightness(image, value):    # Convert the image to the HSV color space    hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)    # Split the channels    h, s, v = cv2.split(hsv)    # Apply the brightness adjustment    v = cv2.add(v, value)    # Clamp the values to the valid range of 0-255    v = np.clip(v, 0, 255)    # Merge the channels back together    hsv = cv2.merge((h, s, v))    # Convert the image back to the BGR color space    adjusted_image = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)    return adjusted_imagedef adjust_contrast(image, value):    # Convert the image to the LAB color space    lab = cv2.cvtColor(image, cv2.COLOR_BGR2LAB)    # Split the channels    l, a, b = cv2.split(lab)    # Apply the contrast adjustment    l = cv2.multiply(l, value)    # Clamp the values to the valid range of 0-255    l = np.clip(l, 0, 255)    # Merge the channels back together    lab = cv2.merge((l, a, b))    # Convert the image back to the BGR color space    adjusted_image = cv2.cvtColor(lab, cv2.COLOR_LAB2BGR)    return adjusted_image# Load the imageimage = cv2.imread(image_path)# Adjust the brightnessbrightness_adjusted = adjust_brightness(image, value=50)# Adjust the contrastcontrast_adjusted = adjust_contrast(image, value=2)# Display the original and adjusted imagescv2.imshow("Original", image)cv2.imshow("Brightness Adjusted", brightness_adjusted)cv2.imshow("Contrast Adjusted", contrast_adjusted)cv2.waitKey(0)cv2.destroyAllWindows()

mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

直方图均衡化

mxO28资讯网——每日最新资讯28at.com

直方图均衡化是一种用于增强对比度的技术。它通过重新分配像素强度值以涵盖更广范围的值来实现这一目标。其主要目标是通过图像获得像素强度的更均匀分布。mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

通过重新分配像素强度,直方图均衡化增强了图像的对比度。mxO28资讯网——每日最新资讯28at.com

import cv2import matplotlib.pyplot as pltimage_path = "cath.jpeg"image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)# Apply histogram equalizationequalized_image = cv2.equalizeHist(image)# Calculate histogramshist_original = cv2.calcHist([image], [0], None, [256], [0, 256])hist_equalized = cv2.calcHist([equalized_image], [0], None, [256], [0, 256])# Plot the histogramsplt.figure(figsize=(10, 5))plt.subplot(1, 2, 1)plt.plot(hist_original, color='b')plt.title("Original Image Histogram")plt.xlabel("Pixel Intensity")plt.ylabel("Frequency")plt.subplot(1, 2, 2)plt.plot(hist_equalized, color='r')plt.title("Equalized Image Histogram")plt.xlabel("Pixel Intensity")plt.ylabel("Frequency")plt.tight_layout()plt.show()

mxO28资讯网——每日最新资讯28at.com

直方图mxO28资讯网——每日最新资讯28at.com

# Display the original and equalized imagesfig, axes = plt.subplots(1, 2, figsize=(10, 5))axes[0].imshow(image, cmap='gray')axes[0].set_title("Original")axes[0].axis("off")axes[1].imshow(equalized_image, cmap='gray')axes[1].set_title("Equalized")axes[1].axis("off")plt.tight_layout()plt.show()

mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

均衡化图像mxO28资讯网——每日最新资讯28at.com

线性缩放

线性缩放,也称为对比度拉伸,用于通过线性映射原始像素值到一个新范围来调整图像的亮度和对比度。该过程涉及根据图像中的最小值和最大值重新缩放像素值,以利用完整的动态范围。mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

线性缩放允许对亮度和对比度的调整进行精确控制。您可以根据特定要求定义所需的强度范围。mxO28资讯网——每日最新资讯28at.com

import cv2import numpy as npimport matplotlib.pyplot as plt# Load the imageimage_path = "cath.jpeg"image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)# Calculate the minimum and maximum pixel values in the imagemin_value = np.min(image)max_value = np.max(image)# Define the desired minimum and maximum intensity values for the output imagenew_min = 5new_max = 10# Perform linear scalingscaled_image = cv2.convertScaleAbs(image, alpha=(new_max - new_min) / (max_value - min_value),                                   beta=new_min - min_value * (new_max - new_min) / (max_value - min_value))# Display the original and scaled imagesfig, axes = plt.subplots(1, 2, figsize=(10, 5))axes[0].imshow(cv2.cvtColor(image, cv2.COLOR_GRAY2RGB))axes[0].set_title("Original")axes[0].axis("off")axes[1].imshow(scaled_image, cmap='gray')axes[1].set_title("Scaled")axes[1].axis("off")plt.tight_layout()plt.show()

mxO28资讯网——每日最新资讯28at.com

线性缩放mxO28资讯网——每日最新资讯28at.com

伽马校正

mxO28资讯网——每日最新资讯28at.com

伽马校正是一种用于纠正图像输入像素值与显示输出强度之间的非线性强度关系的技术。它考虑到人类视觉系统对光的非线性响应,并旨在实现更准确和感知一致的图像表示。mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

相机捕捉或存储在图像文件中的像素值与人类感知亮度之间的关系是非线性的。换句话说,像素值的线性增加并不导致感知亮度的线性增加。这种非线性关系是由于成像传感器和人类视觉系统的响应特性导致的。mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

伽马校正基于一个称为伽马(γ)的参数。伽马值表示输入像素值和显示输出强度之间的关系。它是两者之间非线性映射的度量。mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

伽马校正对像素值应用幂律变换,调整强度值以校正非线性响应。伽马校正的公式如下:mxO28资讯网——每日最新资讯28at.com

校正值 = 输入值 ^ (1 / 伽马)mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

这里,输入值代表原始像素值,校正值代表调整后的像素值。mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

伽马校正的主要作用是补偿非线性强度关系,确保图像中的颜色和细节得到准确的表示。伽马校正发挥重要作用的方式如下:mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

  • 亮度补偿:伽马校正有助于弥补捕捉和显示设备之间亮度响应的差异。它确保显示图像中的感知亮度水平与原始场景一致。
  • 对比度增强:伽马校正可以通过重新分配色调值来增强图像的对比度。根据伽马值的不同,它可以有效地强调图像的暗区域或亮区域中的细节。
  • 色彩准确性:伽马校正有助于实现准确的颜色表示。通过调整伽马值,可以改善颜色再现,确保颜色看起来更自然且忠实于原始场景。
  • 色调映射:在高动态范围(HDR)成像中,伽马校正常常作为色调映射技术的一部分,将场景的广泛动态范围映射到显示设备的有限动态范围。伽马校正有助于保持阴影和高光区域的细节,防止信息丢失。
  • 感知一致性:伽马校正旨在实现感知上一致的图像,其中显示的强度与人类视觉感知一致。通过校正非线性响应,伽马校正确保图像对观众呈现出视觉上愉悦和逼真的效果。
import cv2import numpy as npimage_path = "cath.jpeg"def adjust_gamma(image, gamma):    # Build a lookup table mapping the input pixel values to the corrected gamma values    lookup_table = np.array([((i / 255.0) ** gamma) * 255 for i in np.arange(0, 256)]).astype(np.uint8)    # Apply gamma correction using the lookup table    gamma_corrected = cv2.LUT(image, lookup_table)    return gamma_corrected# Load the imageimage = cv2.imread(image_path)# Adjust the gamma valuegamma_value = 1.5gamma_corrected = adjust_gamma(image, gamma_value)# Display the original and gamma-corrected imagescv2.imshow("Original", image)cv2.imshow("Gamma Corrected", gamma_corrected)cv2.waitKey(0)cv2.destroyAllWindows()

mxO28资讯网——每日最新资讯28at.com

伽马校正mxO28资讯网——每日最新资讯28at.com

几何变换

几何变换使图像的透视、方向和空间关系发生变化。这些变换为图像对齐、目标检测、图像注册等任务提供了基本工具。mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

(1) 平移mxO28资讯网——每日最新资讯28at.com

平移是一种基本的几何变换,涉及将图像水平或垂直移动指定的距离。mxO28资讯网——每日最新资讯28at.com

import cv2import numpy as npimage_path = "cath.jpeg"image = cv2.imread(image_path)# Define the translation matrixtx = 100  # pixels to shift in the x-axisty = 50  # pixels to shift in the y-axistranslation_matrix = np.float32([[1, 0, tx], [0, 1, ty]])# Apply translationtranslated_image = cv2.warpAffine(image, translation_matrix, (image.shape[1], image.shape[0]))# Display the original and translated imagescv2.imshow("Original", image)cv2.imshow("Translated", translated_image)cv2.waitKey(0)cv2.destroyAllWindows()

mxO28资讯网——每日最新资讯28at.com

平移mxO28资讯网——每日最新资讯28at.com

(2) 缩放mxO28资讯网——每日最新资讯28at.com

缩放是指调整图像的大小,可以通过对所有维度应用统一的缩放因子,或者使用不同的缩放因子来调整不同的维度。已缩放。mxO28资讯网——每日最新资讯28at.com

# Define the scaling factorsscale_x = 1.5  # scaling factor for the x-axisscale_y = 0.8  # scaling factor for the y-axis# Apply scalingscaled_image = cv2.resize(image, None, fx=scale_x, fy=scale_y, interpolation=cv2.INTER_LINEAR)# Display the original and scaled imagescv2.imshow("Original", image)cv2.imshow("Scaled", scaled_image)cv2.waitKey(0)cv2.destroyAllWindows()

mxO28资讯网——每日最新资讯28at.com

mxO28资讯网——每日最新资讯28at.com

缩放mxO28资讯网——每日最新资讯28at.com

(3) 旋转mxO28资讯网——每日最新资讯28at.com

旋转是一种几何变换,涉及围绕中心点按指定角度更改图像的方向。mxO28资讯网——每日最新资讯28at.com

# Define the rotation angleangle = 30# Perform rotationrows, cols = image.shape[:2]rotation_matrix = cv2.getRotationMatrix2D((cols / 2, rows / 2), angle, 1)rotated_image = cv2.warpAffine(image, rotation_matrix, (cols, rows))# Display the original and rotated imagescv2.imshow("Original", image)cv2.imshow("Rotated", rotated_image)cv2.waitKey(0)cv2.destroyAllWindows()

mxO28资讯网——每日最新资讯28at.com

旋转mxO28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-45470-0.html数字图像处理的图像操作

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 浅浅介绍下中文分词,用这些库搞定

下一篇: 多线程操作数据库时,您悠着点

标签:
  • 热门焦点
  • vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • 7月安卓手机性价比榜:努比亚+红魔两款新机入榜

    7月登场的新机有努比亚Z50S Pro和红魔8S Pro,除了三星之外目前唯二的两款搭载超频版骁龙8Gen2处理器的产品,而且努比亚和红魔也一贯有着不错的性价比,所以在本次的性价比榜单
  • 5月iOS设备好评榜:iPhone 14仅排第43?

    来到新的一月,安兔兔的各个榜单又重新汇总了数据,像安卓阵营的榜单都有着比较大的变动,不过iOS由于设备的更新换代并没有那么快,所以相对来说变化并不大,特别是iOS好评榜,老款设
  • JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • 中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • 得物宠物生意「狂飙」,发力“它经济”

    作者|花花小萌主近日,得物宣布正式上线宠物鉴别,通过得物App内的“在线鉴别”,可找到鉴别宠物的选项。通过上传自家宠物的部位细节,就能收获拥有专业资质认证的得物鉴
  • 腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之“想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!”曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • 联想的ThinkBook Plus下一版曝光,键盘旁边塞个平板

    ThinkBook Plus 是联想的一个特殊笔记本类别,它在封面放入了一块墨水屏,也给人留下了较为深刻的印象。据有人爆料,联想的下一款 ThinkBook Plus 可能更特殊,它
  • 世界人工智能大会国际日开幕式活动在世博展览馆开启

    30日上午,世界人工智能大会国际日开幕式活动在世博展览馆开启,聚集国际城市代表、重量级院士专家、国际创新企业代表,共同打造人工智能交流平台。上海市副市
Top