首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Deskew MNIST图像

Deskew MNIST图像
EN

Stack Overflow用户
提问于 2017-04-23 23:35:21
回答 1查看 2.1K关注 0票数 2

我在https://fsix.github.io/mnist/Deskewing.html上找到了如何遍历MNIST数据集的图像。好像很管用。我的问题是,在去键控之前,每个像素的值都在0到1之间,但是在解键后,图像的值不再在0到1之间。它们可以是负的,也可以大于1。如何解决这个问题呢?

以下是代码:

代码语言:javascript
复制
def moments(image):
    c0,c1 = np.mgrid[:image.shape[0],:image.shape[1]] # A trick in numPy to create a mesh grid
    totalImage = np.sum(image) #sum of pixels
    m0 = np.sum(c0*image)/totalImage #mu_x
    m1 = np.sum(c1*image)/totalImage #mu_y
    m00 = np.sum((c0-m0)**2*image)/totalImage #var(x)
    m11 = np.sum((c1-m1)**2*image)/totalImage #var(y)
    m01 = np.sum((c0-m0)*(c1-m1)*image)/totalImage #covariance(x,y)
    mu_vector = np.array([m0,m1]) # Notice that these are \mu_x, \mu_y respectively
    covariance_matrix = np.array([[m00,m01],[m01,m11]]) # Do you see a similarity between the covariance matrix
    return mu_vector, covariance_matrix

def deskew(image):
    c,v = moments(image)
    alpha = v[0,1]/v[0,0]
    affine = np.array([[1,0],[alpha,1]])
    ocenter = np.array(image.shape)/2.0
    offset = c-np.dot(affine,ocenter)
    return interpolation.affine_transform(image,affine,offset=offset)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-06 15:30:32

在倾斜过程之后,您可以将图像正常化到0到1之间的范围。

代码语言:javascript
复制
img = deskew(img)
img = (img - img.min()) / (img.max() - img.min())

this question

要将它合并到deskew函数中,您可以这样重写它:

代码语言:javascript
复制
def deskew(image):
    c,v = moments(image)
    alpha = v[0,1]/v[0,0]
    affine = np.array([[1,0],[alpha,1]])
    ocenter = np.array(image.shape)/2.0
    offset = c-np.dot(affine,ocenter)
    img = interpolation.affine_transform(image,affine,offset=offset)
    return (img - img.min()) / (img.max() - img.min())
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43577665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档