前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >图像反转

图像反转

作者头像
裴来凡
发布2022-05-29 09:29:24
4930
发布2022-05-29 09:29:24
举报
文章被收录于专栏:图像处理与模式识别研究所
代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np
import math
import cv2
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png')#读取图像
cv2.imshow('Lena',img)
#获取圆形区域的中心坐标
x0=img.shape[0]//2
y0=img.shape[1]//2
#通过圆形区域半径构造展开后的图像
Lena_height=radius=img.shape[0]//2
Lena_width=int(2*math.pi*radius)
Lena_img=np.zeros((Lena_height,Lena_width,3),dtype="u1")
except_count=0
for j in range(Lena_width):
    theta=2*math.pi*(j/Lena_width)-1/2*math.pi
    for i in range(Lena_height):
        Lena_radius=radius-i
        x=Lena_radius*math.sin(theta)+x0
        y=Lena_radius*math.cos(theta)+y0
        x,y=int(x),int(y)
        try:
            Lena_img[i,j,:]=img[x,y,:]
        except:
            continue
print(except_count)
cv2.imwrite('C:/Users/xpp/Desktop/Lena.png',Lena_img)
cv2.imshow('Lena',Lena_img)
cv2.waitKey(0)

算法:图像反转是通过原始图像中被展开的圆形区域参数构造逆时针展开后的矩形区域,然后根据坐标映射关系将像素值依次填充进去即可。一个标准的圆形区域展开为矩形区域,而展开后的矩形区域高度即是圆形区域的半径r,展开后的矩形区域长度自然是2Πr。 注意:加入了捕获异常代码防止超出原始图像的边界的情况发生。

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

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

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

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

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