Python 升级图像(没有外部库帮助)

我正在尝试将图像放大 200%,但输出图像上有一些奇怪的条。我认为它与中心像素有关。我正在尝试在没有诸如 resize() 之类的库函数的情况下做到这一点。作为参考,我正在尝试实现此功能:

http://img.mukewang.com/62cd2ae7000156af05640307.jpg

import numpy as np


img = cv2.imread('C:\\Users\\usama\\Downloads\\lena.tiff',0)             # Open Image in grayscale

origImg = np.asarray(img)                   # Convert Image to 2D Array

upscaledImg = np.zeros((1024,1024))         # Empty Array for upscaled Image


rowOld = 0            # Orignal Image Row

rowNew = 0            # Upscaled Image Row

colOld = 0            # Original Image Column

colNew = 0            # Upscaled Image Column


def pixeltop():

    return int(origImg[rowOld][colOld]) / 2 + int(origImg[rowOld][colOld + 1]) / 2


def pixelcenter():

    return (int(origImg[rowOld+1][colOld]) + int(origImg[rowOld+1][colOld + 1]) + int(origImg[rowOld+1][colOld]) + int(origImg[rowOld][colOld + 1]))/5


def pixelleft():

    return int(origImg[rowOld][colOld]) / 2 + int(origImg[rowOld + 1][colOld]) / 2


def pixelright():

    return int(origImg[rowOld][colOld + 1]) / 2 + int(origImg[rowOld + 1][colOld + 1]) / 2


def pixelbottom():

    return int(origImg[rowOld + 1][colOld]) / 2 + int(origImg[rowOld + 1][colOld + 1]) / 2


while rowOld < (len(origImg)):                # Outer Loop for transversing rows

  colOld = 0

  colNew = 0

  while colOld < (len(origImg)):              # Inner Loop for transversing columns

    upscaledImg[rowNew][colNew] = origImg[rowOld][colOld]

    upscaledImg[rowNew][colNew+1] = pixeltop()

    upscaledImg[rowNew][colNew+2] = origImg[rowOld][colOld+1]

    upscaledImg[rowNew+1][colNew] = pixelleft()

    upscaledImg[rowNew+1][colNew+1] = pixelcenter()

    upscaledImg[rowNew+1][colNew+2] = pixelright()

    upscaledImg[rowNew+2][colNew] = origImg[rowOld+1][colOld]

    upscaledImg[rowNew+2][colNew+1] = pixelbottom()

    upscaledImg[rowNew+2][colNew+2] = origImg[rowOld+1][colOld+1]

    colOld +=2

    colNew +=4


    if(rowOld == 511):

      break

  rowOld += 2

  rowNew += 4


cv2.imwrite('upscaled.png',upscaledImg)

输出:

http://img1.mukewang.com/62cd2afb0001d1f510251025.jpg

喵喵时光机
浏览 136回答 1
1回答

牛魔王的故事

新图像是通过修改 3x3 像素的窗口构建的,但是您的窗口移动 4 像素 x 4 像素,留下一个像素的间隙,因此出现黑条。仅关注行的示例:我们从 rownew=0 开始-> Img[0] 已设置-> Img[0+1] 已设置->img[0+2] 已设置现在 rownew+=4-> Img[4+0] 已设置->Img[4+1] 已设置->Img[4+2] 已设置将 Img[3] 留空您可以将窗口的填充更改为 3 或实现分配以拥有 4x4 窗口
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python