Tag: image processing

我怎样才能有效地处理类似于Matlab的blkproc(blockproc)函数块的numpy数组

我正在寻找一种有效的方法,将图像有效地分割成小区域,分别处理每个区域,然后将每个进程的结果重新组合为单个处理后的图像。 Matlab有一个叫做blkproc的工具(在Matlab的新版本中由blockproc取代)。 在一个理想的世界中,函数或类也会支持inputmatrix中各个分区之间的重叠。 在Matlab帮助中,blkproc被定义为: B = blkproc(A,[mn],[mborder nborder],好玩,…) A是你的inputmatrix, [mn]是块大小 [mborder,nborder]是你的边界区域的大小(可选) 乐趣是适用于每个块的function 我曾经在一起讨论过一个方法,但是它让我觉得很笨拙,我敢打赌还有更好的办法。 冒着我自己的尴尬风险,这是我的代码: import numpy as np def segmented_process(M, blk_size=(16,16), overlap=(0,0), fun=None): rows = [] for i in range(0, M.shape[0], blk_size[0]): cols = [] for j in range(0, M.shape[1], blk_size[1]): cols.append(fun(M[i:i+blk_size[0], j:j+blk_size[1]])) rows.append(np.concatenate(cols, axis=1)) return np.concatenate(rows, axis=0) R = np.random.rand(128,128) passthrough = lambda(x):x Rprime […]

如何在不知道物体与相机之间的距离的情况下,从图像中获取物体的实际尺寸?

我必须制作一个移动应用程序来计算图像中物体的实际尺寸。 我已经做了一些研究,发现有用的[问题]: 你如何find给定图像的对象的高度? 照相机的距离与物体的实际尺寸之间的关系实际上并不那么复杂,传感器上物体的尺寸与物体在实际生活中的尺寸之比等于焦距和到物体的距离。 distance to object (mm) = focal length (mm) * real height of the object (mm) * image height (pixels) ————————————————————————— object height (pixels) * sensor height (mm) 但如果不知道距离,如何得到物体真实高度的值? 从图像中创build三维模型的工具是否具有真实的生命维度?

重新采样表示图像的numpy数组

我正在寻找如何以一个新的尺寸重新取样代表图像数据的numpy数组,最好有一个插值方法的select(最近的,双线性等)。 我知道有 scipy.misc.imresize 这是通过包装PIL的resizefunction来完成的。 唯一的问题是,因为它使用PIL,numpy数组必须符合图像格式,给我最多4个“彩色”通道。 我希望能够调整任意图像的大小,使用任何数量的“颜色”通道。 我想知道是否有一个简单的方法来做这个scipy / numpy,或者如果我需要推出自己的。 对于如何自己制作一个我有两个想法: 一个在每个通道上分别运行scipy.misc.imresize的函数 创build我自己的使用scipy.ndimage.interpolation.affine_transform 第一个对于大数据可能会很慢,第二个似乎没有提供除了样条的其他插值方法。

使用Python从图片中找出彩色graphics的数量

我的问题与识别图片颜色有关。 做微生物学我需要计数显微镜照相机拍摄的照片上的细胞核数量。 我用GIMP标记核红点的核。 现在我需要在python中创build一个脚本,给出一个图像,告诉我有多less红点。 图片中除了点之外没有红色。 我已经想到了一个相当复杂的解决scheme,可能不是最好的解决scheme:拍一张照片,开始通过像素检查每个人的颜色。 如果是红色,检查所有8个最近的像素,recursion地检查每个红色的邻居,直到没有更多的邻居红色像素被发现。 然后将核数加1,并标记遍历的像素,这样它们不会再次迭代。 然后从停止的地方继续迭代。 似乎有点沉重,所以我想我会问,也许有人已经更优雅地处理了类似的问题。 问候,桑德

不使用imrotate,通过Matlab进行图像旋转

我正在试图用Matlab旋转图像,而不使用imrotate函数。 我实际上是通过使用变换matrix做出来的,但是它不够好。问题是,旋转的图像是“滑动的”。让我用图片来告诉你。 这是我想要旋转的图像: 但是当我旋转它,例如45度,它变成这样: 我在问为什么会发生这种情况。这里是我的代码,有没有关于它的math或编程错误? image=torso; %image padding [Rows, Cols] = size(image); Diagonal = sqrt(Rows^2 + Cols^2); RowPad = ceil(Diagonal – Rows) + 2; ColPad = ceil(Diagonal – Cols) + 2; imagepad = zeros(Rows+RowPad, Cols+ColPad); imagepad(ceil(RowPad/2):(ceil(RowPad/2)+Rows-1),ceil(ColPad/2):(ceil(ColPad/2)+Cols-1)) = image; degree=45; %midpoints midx=ceil((size(imagepad,1)+1)/2); midy=ceil((size(imagepad,2)+1)/2); imagerot=zeros(size(imagepad)); %rotation for i=1:size(imagepad,1) for j=1:size(imagepad,2) x=(i-midx)*cos(degree)-(j-midy)*sin(degree); y=(i-midx)*sin(degree)+(j-midy)*cos(degree); x=round(x)+midx; y=round(y)+midy; if (x>=1 && […]

如何在没有抗锯齿的情况下拉伸图像

所以我最近碰到这个: http : //www.nicalis.com/index.php 我很好奇:有没有办法用较小的图像做这种事情? 我的意思是,这是像素艺术,而不是使用每个像素四倍大小的图像,我们不能用代码来拉伸它们吗? 所以我开始尝试做到这一点。 我尝试过CSS,Javascript甚至HTML,但都没有工作。 他们都模糊起来真的很糟糕(像这样: http : //jsfiddle.net/nUVJt/2/ ),这引起了我的问题:你可以伸展一个图像浏览器中没有任何antialiasing? 我打开任何build议,无论是使用canvas,jQuery,CSS3,或其他。 谢谢您的帮助! 编辑:现在有一个更好的方法来做到这一点! 一个稍微不太危险的方式! 这是魔法: .pixelated { image-rendering: -moz-crisp-edges; image-rendering: -o-crisp-edges; image-rendering: -webkit-optimize-contrast; -ms-interpolation-mode: nearest-neighbor; image-rendering: pixelated; } 这将停止所有现代浏览器中的反锯齿。 它甚至可以在IE7-8中工作,但是不会在9,我不知道有什么办法在9,不幸的是(除了下面的canvas黑客)。 用JS这样做比用JS要快得多。 以下是关于这些的更多信息: https : //developer.mozilla.org/en-US/docs/CSS/Image-rendering 编辑2:因为这还不是一个官方的规范,它不是很可靠。 Chrome和FF似乎都停止了支持它,因为我写了上面的内容(根据下面提到的这篇文章 ),这真的很烦人。 我们可能要等上好几年才能真正开始在CSS中使用它,这真的很不幸。 最终编辑:现在有一个正式的方法来做到这一点! 有一个叫做image-rendering的新属性。 这是在CSS3规范 。 现在支持是非常多的 ,但是Chrome刚刚添加了支持,所以我们只能说image-rendering: pixelated; 它会工作的所有地方(yaayy常青浏览器!)

查找BitmapImage的特定像素颜色

我有一个WPF的BitmapImage,我从一个.JPG文件加载,如下所示: this.m_image1.Source = new BitmapImage(new Uri(path)); 我想查询什么颜色是在特定的点。 例如,像素(65,32)处的RGB值是多less? 我如何去做这件事? 我正在采取这种做法: ImageSource ims = m_image1.Source; BitmapImage bitmapImage = (BitmapImage)ims; int height = bitmapImage.PixelHeight; int width = bitmapImage.PixelWidth; int nStride = (bitmapImage.PixelWidth * bitmapImage.Format.BitsPerPixel + 7) / 8; byte[] pixelByteArray = new byte[bitmapImage.PixelHeight * nStride]; bitmapImage.CopyPixels(pixelByteArray, nStride, 0); 虽然我会承认有一点猴子看,猴子会继续这个代码。 无论如何,是否有一个简单的方法来处理这个字节数组转换为RGB值?

广场检测不find正方形

我正在使用OpenCV库样本中的square.c程序。 它适用于每个图像,但我真的不知道为什么它不能识别在该图像中绘制的正方形 http://desmond.imageshack.us/Himg12/scaled.php?server=12&filename=26725680.jpg&res=medium CANNY之后: http : //img847.imageshack.us/img847/6787/canny.jpg DILATE之后: http : //img593.imageshack.us/img593/3010/dilate.jpg 结果图片(红色) http://img267.imageshack.us/img267/8016/resultuq.jpg 正如你所看到的,广场是不被检测到的。 检测后,我需要提取广场中包含的区域…如果没有投资回报率,怎么可能?

如何在另一个内部find一个图像?

我有2个BMP图像。 ImageA是一个截图(例子)ImageB是其中的一个子集。 例如说,一个图标。 我想在ImageA中findImageB的X,Y坐标(如果存在的话)。 任何想法我会怎么做?

将位图数组转换为YUV(YCbCr NV21)

如何将BitmapFactory.decodeFile()返回的位图转换为YUV格式(类似于相机的onPreviewFrame()在字节数组中返回的内容)?