前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >图像阴影调整

图像阴影调整

作者头像
裴来凡
发布2022-05-29 10:05:28
发布2022-05-29 10:05:28
45800
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制
import cv2
import numpy as np
def max_filter(image,filter_size):
    empty_image=np.full((image.shape[0]+(filter_size//2)*2,image.shape[1]+(filter_size//2)*2),-1)
    #原始图像填充进矩阵
    empty_image[(filter_size//2):empty_image.shape[0]-(filter_size//2),(filter_size//2):empty_image.shape[1]-(filter_size//2)]=image.copy()
    result = np.full((image.shape[0], image.shape[1]), -1)
    #遍历原图像中的每个像素点,对于点,选取其周围(filter_size*filter_size)个像素中的最大值,作为结果矩阵中的对应位置值
    for h in range(filter_size//2,empty_image.shape[0]-filter_size//2):
        for w in range(filter_size//2, empty_image.shape[1]-filter_size//2):
            filter=empty_image[h-(filter_size//2):h+(filter_size//2)+1,
                     w-(filter_size//2):w+(filter_size//2)+1]
            result[h-filter_size//2,w-filter_size//2]=np.amax(filter)
    return result
def min_filter(image,filter_size):
    empty_image=np.full((image.shape[0]+(filter_size//2)*2,image.shape[1]+(filter_size//2)*2),400)
    #原始图像填充进矩阵
    empty_image[(filter_size//2):empty_image.shape[0]-(filter_size//2),
    (filter_size//2):empty_image.shape[1]-(filter_size//2)]=image.copy()
    result=np.full((image.shape[0],image.shape[1]),400)
    #遍历原图像中的每个像素点,对于点,选取其周围(filter_size*filter_size)个像素中的最小值,作为结果矩阵中的对应位置值
    for h in range(filter_size//2,empty_image.shape[0]-filter_size//2):
        for w in range(filter_size//2, empty_image.shape[1]-filter_size//2):
            filter=empty_image[h-(filter_size//2):h+(filter_size//2)+1,
                     w-(filter_size//2):w+(filter_size//2)+1]
            result[h-filter_size//2, w-filter_size//2]=np.amin(filter)
    return result
def shadow_adjustment(image_path):
    image=cv2.imread(image_path,0)
    max_result=max_filter(image,30)
    min_result=min_filter(max_result,30)
    result=image-min_result
    result=cv2.normalize(result, None,0,255,norm_type=cv2.NORM_MINMAX)
    return result
if __name__=="__main__":
    result=shadow_adjustment('C:/Users/xpp/Desktop/Lena.png')
    cv2.imwrite("C:/Users/xpp/Desktop/result.png",result)

算法:图像阴影调整是通过填充全图像的最大值和最小值来调整图像阴影。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 图像处理与模式识别研究所 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档