小编fei*_*ann的帖子

获取2D数组中局部最大值的坐标超过特定值

from PIL import Image
import numpy as np
from scipy.ndimage.filters import maximum_filter
import pylab

# the picture (256 * 256 pixels) contains bright spots of which I wanna get positions
# problem: data has high background around value 900 - 1000

im = Image.open('slice0000.png')
data = np.array(im)

# as far as I understand, data == maximum_filter gives True-value for pixels
# being the brightest in their neighborhood (here 10 * 10 pixels)

maxima = (data == maximum_filter(data,10))
# How can …
Run Code Online (Sandbox Code Playgroud)

python numpy image scipy

23
推荐指数
3
解决办法
3万
查看次数

使用python和互相关进行图像配准

我得到了两张图片,显示了相同的内容:2D高斯形斑点.我把这两个16位的png文件称为"left.png"和"right.png".但是,通过稍微不同的光学设置获得它们,相应的斑点(物理上相同)出现在略微不同的位置.意味着右边以非线性方式略微拉伸,扭曲或左右.因此,我希望从左到右进行转换.

因此,对于左侧的每个像素,其x和y坐标,我想要一个函数,给出位移矢量的分量,指向右侧的相应像素.

在前一种方法中,我试图获得相应斑点的位置以获得相对距离deltaX和deltaY.然后我将这些距离拟合到taylor扩展到T(x,y)的二阶,给出了左边每个像素(x,y)的位移矢量的x和y分量,指向相应的像素(x',y')在右边.

为了得到更一般的结果,我想使用归一化的互相关.为此,我将左边的每个像素值与右边的相应像素值相乘,并将这些乘积相加.我正在寻找的转换应该连接最大化总和的像素.因此,当总和最大化时,我知道我将相应的像素相乘.

我真的尝试了很多,但没有管理.我的问题是,如果你们中的某个人有想法或做过类似的事情.

import numpy as np
import Image

left = np.array(Image.open('left.png'))
right = np.array(Image.open('right.png'))

# for normalization (http://en.wikipedia.org/wiki/Cross-correlation#Normalized_cross-correlation)    
left = (left - left.mean()) / left.std()
right = (right - right.mean()) / right.std()
Run Code Online (Sandbox Code Playgroud)

如果我能更清楚地说明这个问题,请告诉我.我仍然需要查看如何使用乳胶发布问题.

非常感谢您的投入.

剩下 对

[left.png] http://i.stack.imgur.com/oSTER.png [right.png] http://i.stack.imgur.com/Njahj.png

我担心,在大多数情况下,16位图像看起来只是黑色(至少在我使用的系统上):(但当然有数据存在.

更新1

我试着澄清我的问题.我正在寻找一个矢量场,其位移矢量从left.png中的每个像素指向right.png中的相应像素.我的问题是,我不确定我的约束.

import numpy as np
import Image

left = np.array(Image.open('left.png'))
right = np.array(Image.open('right.png'))

# for normalization (http://en.wikipedia.org/wiki/Cross-correlation#Normalized_cross-correlation)    
left = (left - left.mean()) / left.std()
right = (right - right.mean()) / right.std()
Run Code Online (Sandbox Code Playgroud)

其中向量r(分量x和y)指向left.png中的像素,向量r-prime(分量x-prime和y-prime)指向right.png中的对应像素.每个r都有一个位移矢量.

我之前做的是,我发现了矢量场d的手动组件并将它们拟合到第二度的多项式:

import numpy …
Run Code Online (Sandbox Code Playgroud)

python image cross-correlation

10
推荐指数
1
解决办法
5558
查看次数

逐帧可视化3D-numpy-array

# -*- coding: utf-8 -*-
"""
slider 3D numpy array

"""

import numpy
import pylab
from matplotlib.widgets import Slider

data = numpy.random.rand(100,256,256) #3d-array with 100 frames 256x256

ax = pylab.subplot(111)
pylab.subplots_adjust(left=0.25, bottom=0.25)

frame = 0
l = pylab.imshow(data[frame,:,:]) #shows 256x256 image, i.e. 0th frame

axcolor = 'lightgoldenrodyellow'
axframe = pylab.axes([0.25, 0.1, 0.65, 0.03], axisbg=axcolor)
sframe = Slider(axframe, 'Frame', 0, 100, valinit=0)

def update(val):
    frame = numpy.around(sframe.val)
    pylab.subplot(111)
    pylab.subplots_adjust(left=0.25, bottom=0.25)
    pylab.imshow(data[frame,:,:])

sframe.on_changed(update)

pylab.show()
Run Code Online (Sandbox Code Playgroud)

我有一个3D-numpy数组,实际上包含大小为256x256的图像.现在我想使用滑块显示这些帧.它看起来真的很慢.有没有更好的方法呢?

python numpy data-visualization matplotlib

5
推荐指数
1
解决办法
4123
查看次数