天天看点

图像增强——数字图像处理(python实现)一、题目二、实验过程三、实验结果四、代码

目录

一、题目

1、问题描述

2、问题分析

二、实验过程

1、中值滤波

2、分段线性变换

3、图像增强

三、实验结果

四、代码

一、题目

1、问题描述

对于下面这幅图像,请问可以通过那些图像增强的手段,达到改善视觉效果的目的?请显示处理结果,并附简要处理流程说明。

图像增强——数字图像处理(python实现)一、题目二、实验过程三、实验结果四、代码

2、问题分析

若想改善图片的质量,我们需要去除其中的噪声。图片轮廓不清晰,我们将其锐化即可。

下面简单介绍一下处理过程中遇到的问题及解决方法:

问题 解决方法
噪声 中值滤波
各地区颜色不分明,模糊 分段线性变换
边界不清晰,棱角不分明 图像锐化

二、实验过程

1、中值滤波

(1)函数

medianblur(src , dst , size)

(2)参数说明

src:表示原始图像

dst:表示处理后的图像

size:孔径线性尺寸(必须是大于1的奇数)

(3)函数功能

使用中值滤波来平滑图像,图像去噪

2、分段线性变换

(1)函数

SLT(image, x1, x2, y1, y2)

(2)参数说明

Image : 原始图像

(3)函数功能

使图像有更好的目视效果或突出有用的信息,提高图像质量和突出所需信息

3、图像增强

(1)函数

filter2d(img_path)

(2)参数说明

img_path: 输入图片路径

(3)函数功能

是使图像边缘更清晰的一种图像处理方法

三、实验结果

1、灰度图

图像增强——数字图像处理(python实现)一、题目二、实验过程三、实验结果四、代码

2、中值滤波

图像增强——数字图像处理(python实现)一、题目二、实验过程三、实验结果四、代码

3、分段线性变换

图像增强——数字图像处理(python实现)一、题目二、实验过程三、实验结果四、代码

4、图像锐化

图像增强——数字图像处理(python实现)一、题目二、实验过程三、实验结果四、代码

5、效果对比图

图像增强——数字图像处理(python实现)一、题目二、实验过程三、实验结果四、代码

四、代码

1、medianBlur.py

import cv2

# 读取图片
img = cv2.imread('img0.png')
pre_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# 中值滤波
img1 = cv2.medianBlur(img,3)

# 显示并保存图片
cv2.imshow('pre_img',img)
cv2.imshow('medianBlur',img1)
cv2.imwrite('img1.jpg', img1)
cv2.waitKey(0)
           

2、SLT.py

import numpy as np
import cv2 as cv2

# 读取图片
img = cv2.imread('img1.jpg')
pre_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

def SLT(img, x1, x2, y1, y2):
    lut = np.zeros(256)
    for i in range(256):
        if i < x1:
            lut[i] = (y1 / x1) * i
        elif i < x2:
            lut[i] = ((y2 - y1) / (x2 - x1)) * (i - x1) + y1
        else:
            lut[i] = ((y2 - 255.0) / (x2 - 255.0)) * (i - 255.0) + 255.0
    img2 = cv2.LUT(img, lut)
    img2 = np.uint8(img2 + 0.5)
    return img2

# 分段线性变换
img2 = SLT(img, 80, 150, 50, 230)

# 显示并保存图片
cv2.imshow('SLT', img2)
cv2.imwrite('img2.jpg', img2)
cv2.waitKey(0)
           

3、filter2d.py

import cv2 as cv2
import numpy as np

# 读取图像
img = cv2.imread('img1.jpg')
pre_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img0 = cv2.imread('img0.png')
img0 = cv2.cvtColor(img0, cv2.COLOR_BGR2RGB)

def filter2d(img_path):
    kernel = np.array([[0, -1, 0],
                       [-1, 5, -1],
                       [0, -1, 0]])

    img3 = cv2.filter2D(img, -1, kernel)
    return img3

# 图像锐化
img3 = filter2d(img)

merge = np.hstack((img0,img3))

# 显示并保存图像
cv2.imshow('filter2D', img3)
cv2.imwrite('img3.jpg',img3)
cv2.imshow('merge',merge)
cv2.imwrite('merge.jpg',merge)
cv2.waitKey(0)
           

继续阅读