# dip_2425s1_assignment1_answer **Repository Path**: lc061003/dip_2425s1_assignment1_answer ## Basic Information - **Project Name**: dip_2425s1_assignment1_answer - **Description**: 基础的图像处理作业 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 19 - **Created**: 2025-10-13 - **Last Updated**: 2025-10-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 数字图像处理实验一:图像基础操作 环境要求 操作系统:支持 Python 运行的系统(Windows、Linux、macOS 等)。 Python 环境:安装有 scikit-image(用于图像读取等操作)和 matplotlib(用于图像显示)库的 Python 环境。可通过 pip install scikit-image matplotlib 进行安装。 开发工具:Jupyter Lab(用于编写和运行代码,也可使用其他 Python 集成开发环境或文本编辑器配合命令行运行)。 文件说明 代码文件:以 hello_world.ipynb 为例,这是一个 Jupyter Notebook 文件,包含了一系列图像基础操作的代码示例。 图像文件: x.jpg:用于基础图像操作(如部分区域、像素、颜色处理等)的测试图像。 galaxy-full.jpg:星系图像,用于星系图像颜色通道处理的测试。 earth.jpg:地球相关图像,用于条纹效果处理的测试。 代码示例说明 图像上半部分处理 python 运行 from skimage import io import matplotlib.pyplot as plt img = io.imread('x.jpg') h, w, c = img.shape for i in range(w): for j in range(h // 2): img[j, i][0] = 255 # 将图像上半部分的红色通道值设为255(白色) plt.imshow(img) plt.show() 功能:读取 x.jpg 图像后,通过双层循环遍历图像的每一列和上半部分(高度的一半)的每一行,将对应像素的红色通道值设置为 255,使图像上半部分呈现白色调,最后显示处理后的图像。 2. 图像左半部分处理 python 运行 from skimage import io import matplotlib.pyplot as plt img = io.imread('x.jpg') h, w, c = img.shape for i in range(w // 2): for j in range(h): img[j, i][0] = 255 # 将图像左半部分的红色通道值设为255(白色) plt.imshow(img) plt.show() 功能:读取图像后,遍历图像左半部分(宽度的一半)的每一列和每一行,将对应像素红色通道设为 255,使左半部分呈白色,随后显示图像。 3. 图像左上四分之一处处理 python 运行 from skimage import io import matplotlib.pyplot as plt img = io.imread('x.jpg') print(img.shape) h, w, c = img.shape for i in range(w//2): for j in range(h//2): img[j, i][0] = 255 # 将图像左上四分之一区域的红色通道值设为255(白色) plt.imshow(img) plt.show() 功能:先打印图像形状,再读取图像,遍历左上四分之一区域(宽度和高度各取一半)的像素,将红色通道设为 255,最后显示处理后的图像。 4. 小区域像素处理 python 运行 from skimage import io import matplotlib.pyplot as plt img = io.imread('x.jpg') print(img.shape) h, w, c = img.shape for i in range(3,7): for j in range(3,7): img[j, i][0] = 255 # 将图像中3-6列、3-6行区域的红色通道值设为255(白色) plt.imshow(img) plt.show() 功能:打印图像形状后,读取图像,对图像中列范围 3 - 6、行范围 3 - 6 的小区域像素,将其红色通道设为 255,然后显示图像。 5. 指定区域颜色处理 python 运行 from skimage import io import matplotlib.pyplot as plt img = io.imread('x.jpg') print(img.shape) h, w, c = img.shape for i in range(1,9): for j in range(1,9): img[j, i][1] = 255 # 将图像中1-8列、1-8行区域的绿色通道值设为255(绿色) img[j, i][2] = 0 # 将图像中1-8列、1-8行区域的蓝色通道值设为0(蓝色) plt.imshow(img) plt.show() 功能:打印图像形状后,读取图像,对 1 - 8 列、1 - 8 行区域的像素,设置绿色通道为 255、蓝色通道为 0,改变该区域颜色,最后显示图像。 6 - 8. 星系图像颜色通道处理 仅保留红色通道(代码示例): python 运行 from skimage import io import matplotlib.pyplot as plt img = io.imread('galaxy-full.jpg') h, w, c = img.shape for i in range(w): for j in range(h): img[j, i][1] = 0 # 将绿色通道值设为0(黑色) img[j, i][2] = 0 # 将蓝色通道值设为0(黑色) plt.imshow(img) plt.show() 功能:读取星系图像后,遍历所有像素,将绿色和蓝色通道值设为 0,仅保留红色通道,使星系图像主要呈现红色调,然后显示图像。 仅保留绿色通道(代码示例): python 运行 from skimage import io import matplotlib.pyplot as plt img = io.imread('galaxy-full.jpg') h, w, c = img.shape for i in range(w): for j in range(h): img[j, i][0] = 0 # 将红色通道值设为0(黑色) img[j, i][2] = 0 # 将蓝色通道值设为0(黑色) plt.imshow(img) plt.show() 功能:读取星系图像,遍历像素将红色和蓝色通道设为 0,仅保留绿色通道,让星系图像主要呈绿色调,随后显示。 仅保留蓝色通道(代码示例): python 运行 from skimage import io import matplotlib.pyplot as plt img = io.imread('galaxy-full.jpg') h, w, c = img.shape for i in range(w): for j in range(h): img[j, i][0] = 0 # 将红色通道值设为0(黑色) img[j, i][1] = 0 # 将绿色通道值设为0(黑色) plt.imshow(img) plt.show() 功能:读取星系图像,遍历像素将红色和绿色通道设为 0,仅保留蓝色通道,使星系图像主要呈蓝色调,最后显示。 9. 条纹效果处理 python 运行 from skimage import io import matplotlib.pyplot as plt img = io.imread('earth.jpg') h, w, c = img.shape for i in range(w): for j in range(h): if i%3==0: img[j, i][0] = 255 # 列数模3为0时,红色通道设为255 elif i%3==1: img[j, i][1] = 255 # 列数模3为1时,绿色通道设为255 else: img[j, i][2] = 255 # 列数模3为2时,蓝色通道设为255 plt.figure(figsize=(15,15)) plt.imshow(img) plt.show() 功能:读取地球相关图像后,根据列数对 3 取模的结果,分别设置不同列的红、绿、蓝色通道值为 255,从而在图像上产生红、绿、蓝交替的条纹效果,最后设置图像显示尺寸并显示处理后的图像。 使用方法 将图像文件(x.jpg、galaxy-full.jpg、earth.jpg)与代码文件(如 hello_world.ipynb)放在同一目录下。 打开 Jupyter Lab,加载代码文件。 依次运行代码单元格,查看每段代码对应的图像处理效果。 学习要点 掌握使用 scikit-image 库的 io.imread 函数读取图像的方法。 理解图像的数组表示形式,包括高度、宽度和通道数的概念,以及如何通过数组索引访问和修改像素的颜色通道值。 学会使用 matplotlib.pyplot 库的 imshow 和 show 函数显示图像。 熟悉通过循环遍历图像像素,并根据不同条件(如区域范围、取模运算等)对像素进行颜色通道修改,从而实现各种基础图像操作(如区域处理、颜色通道分离、特殊效果生成等)的编程思路。 姓名:李昶 学号:202452320208