• 大小: 1.22MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-10-30
  • 语言: Python
  • 标签: python  线性回归  

资源简介

基于线性回归进行图像插值,恢复受损图像。语言是python

资源截图

代码片段和文件信息

import numpy as np
import cv2
import matplotlib.mlab as mlab
import math
#按行回归
def linearRegressionByRow(img):
    [rows cols channels] = img.shape #获得图像的行列以及通道信息
    noiseMask = ((img != 0)).astype(np.double)#01矩阵用来存储噪点坐标
    #标准化
    minX = np.min(np.min(np.min(img)))
    maxX = np.max(np.max(np.max(img)))
    img_copy = (img - minX) / (maxX - minX)
    basisNum=100#basis function 个数
    sigma=0.01#高斯函数的方差
    # 初始化basis function
    Phi_mu=np.linspace(1colsbasisNum)/cols
    Phi_sigma=sigma*np.array([1 for _ in range(basisNum)])
    x=np.array([i+1 for i in range(cols)])
    x=(x-np.min(x))/(np.max(x)-np.min(x))#得到(01)之间均匀分布的数组
    resImg=img_copy.copy()

    for k in range(channels):
        for i in range(rows):    # 遍历每一行
            # 获取好点与坏点的index
            msk=noiseMask[i:k]
            msk=msk[:]
            misIdx=np.where(msk<1)
            misNum=len(misIdx[0])

            ddIdx=np.where(msk>=1)
            ddNum=len(ddIdx[0])
            Phi=np.column_stack((np.ones([ddNum1])np.zeros([ddNumbasisNum-1])))
            # 训练得到w
            for j in range(1basisNum):
                Phi[:j]=mlab.normpdf(np.transpose(x[ddIdx])Phi_mu[j-1]Phi_sigma[j-1])*math.sqrt(2*math.pi)*Phi_sigma[j-1]

            w=np.dot(np.dot(np.linalg.pinv(np.dot(np.transpose(Phi)Phi))np.transpose(Phi))np.transpose(img_copy[iddIdxk]))
            Phi1=np.column_stack(((np.ones([misNum1]))np.zeros([misNumbasisNum-1])))
            # 预测
            for j in range(1basisNum):

                Phi1[:j]=mlab.normpdf(np.transpose(x[misIdx])Phi_mu[j-1]Phi_sigma[j-1])*math.sqrt(2*math.pi)*Phi_sigma[j-1]
            resImg[imisIdxk]=np.dot(np.transpose(w)np.transpose(Phi1))
    # 得到结果并重新投影到(0,255)
    resImg=np.minimum(resImg1)
    resImg=np.maximum(resImg0)
    resImg*=255
    # cv2.imwrite(“./result_row.png“ resImg)
    return resImg
#按列回归,思路与按行回归一样
def linearRegressionByCol(img):
    [rows cols channels] = img.shape
    noiseMask = ((img != 0)).astype(np.double)
    minX = np.min(np.min(np.min(img)))
    maxX = np.max(np.max(np.max(img)))
    img_copy = (img - minX) / (maxX - minX)
    basisNum=100
    sigma=0.01
    Phi_mu=np.linspace(1rowsbasisNum)/rows
    Phi_sigma=sigma*np.array([1 for _ in range(basisNum)])
    x=np.array([i+1 for i in range(rows)])
    x=(x-np.min(x))/(np.max(x)-np.min(x))
    resImg=img_copy.copy()
    for k in range(channels):
        for i in range(cols):
            msk=noiseMask[:ik]
            msk=msk[:]
            misIdx=np.where(msk<1)
            misNum=len(misIdx[0])
            ddIdx=np.where(msk>=1)
            ddNum=len(ddIdx[0])
            Phi=np.column_stack((np.ones([ddNum1])np.zeros([ddNumbasisNum-1])))
            for j in range(1basisNum):
                Phi[:j]=mlab.normpdf(np.transpose(x[ddIdx])Phi_mu[j-1]Phi_sigma[j-1])*math.sqrt(2*math.pi)*Phi_sigma[j-1]

            w=np.dot(np.dot(np.linalg.pinv(np.dot(np.transpose(Phi)Phi))np.transpose(Phi))np.transpose(img_copy[ddId

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件           0  2018-05-25 20:03  鍙楁崯鍥?
     文件      287928  2017-05-03 09:20  鍙楁崯鍥?B.png
     目录           0  2018-06-18 19:10  __MACOSX\
     文件           0  2018-06-18 19:10  __MACOSX\鍙楁崯鍥?
     文件         274  2017-05-03 09:20  __MACOSX\鍙楁崯鍥?._B.png
     文件      177886  2017-05-03 09:20  鍙楁崯鍥?C.png
     文件         218  2017-05-03 09:20  __MACOSX\鍙楁崯鍥?._C.png
     文件       39962  2017-05-03 09:20  鍙楁崯鍥?A.png
     文件         274  2017-05-03 09:20  __MACOSX\鍙楁崯鍥?._A.png
     目录           0  2018-05-25 20:11  code\
     文件        6148  2018-05-25 20:11  code\.DS_Store
     目录           0  2018-06-18 19:10  __MACOSX\code\
     文件         120  2018-05-25 20:11  __MACOSX\code\._.DS_Store
     文件       18441  2018-05-25 20:10  code\hw2.py
     文件         176  2018-05-25 20:10  __MACOSX\code\._hw2.py
     目录           0  2018-05-25 20:35  缁撴灉\
     文件        6148  2018-05-25 20:39  缁撴灉\.DS_Store
     目录           0  2018-06-18 19:10  __MACOSX\缁撴灉\
     文件         120  2018-05-25 20:39  __MACOSX\缁撴灉\._.DS_Store
     文件      240123  2018-05-25 19:02  缁撴灉\3150103695_B.png
     文件      260177  2018-05-25 14:31  缁撴灉\3150103695_C.png
     文件         233  2018-05-25 14:31  __MACOSX\缁撴灉\._3150103695_C.png
     文件      300689  2018-05-25 14:29  缁撴灉\3150103695_A.png
     文件         233  2018-05-25 14:29  __MACOSX\缁撴灉\._3150103695_A.png
     文件         207  2018-05-25 20:35  readme.txt
     文件         317  2018-05-25 20:35  __MACOSX\._readme.txt

评论

共有 条评论