基于python-opencv对畸变指纹图像进行修复

为了降低成本和体积,一些光电产品在设计时常采用计算替代复杂的光学修正。现有一指采集设备,有效窗口尺寸为32mm X 32mm,直接获取带有窗口的图像。请对图像进行修正,得到640X640无畸变的指纹图像。

基本思路:

 

 代码如下:

import cv2
import numpy as np
import time

#read image
inimage=cv2.imread("D:\python_opencv_src\images\_finger.jpg",1)
cv2.imshow("finger",inimage)
           
#allocating image space color  ROI [ymin:ymax, xmin:xmax]
ROIimg = inimage[0:342,16:671]  #原图中所选取ROI的范围
cv2.imwrite("ROI.jpg",ROIimg)
col,row,ch = ROIimg.shape
print (col,row,ch)
          
#set the source point in source image

inpoints=np.float32([(0,0),(655,0),(39,342),(630,341)])#p1,p2,p3,p4,即ROI中需处理的畸变区域顶点(本实验中为指纹所在的显示屏四角)的坐标
outpoints=np.float32([(0,0),(639,0),(0,639),(639,639)])#p'1,p'2,p'3, p'4,即输出图像目标顶点坐标,与输出图像尺寸关联

#get Transform parameters
Trans=cv2.getPerspectiveTransform(np.array(inpoints),np.array(outpoints))

#Transform
start = time.clock()
transimg=cv2.warpPerspective(ROIimg,Trans,(640,640)) # 输出图像640x640
end = time.clock()
print("time=",end-start)

#cv2.imshow('ROI',ROIimg)
#cv2.imwrite("cinema_out.jpg",transimg)

cv2.imshow('output',transimg)

while 1:
 key = cv2.waitKey(1)

 if key>0:
   break

cv2.destroyAllWindows()

查看图片中某点坐标的方法参考:快速查看图片中某点的像素 X、Y 坐标_图片坐标_L -GRAZY的博客-CSDN博客

效果如下:

原图:

 修复后:

可以看出,畸变的指纹得到了修正

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

via amiko

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值