标签: image-processing

在matlab中用imread读取图像文件给出了什么样的表示?

我是matlab上的新手并做了一些小的图像处理任务.我正在使用imread来阅读一些图像但是在阅读图像后我没有得到什么样的表示.它是图像直方图的二进制表示吗?

如果有人可能形容我,我将不胜感激:)

file-io matlab image-processing

0
推荐指数
1
解决办法
510
查看次数

使用从缓冲区复制的图像更改cv :: Mat会影响原始图像

我有24位RGB格式的图像缓冲区.使用此缓冲区复制到cv :: Mat

cv::Mat mat = cv::Mat(image->height, image->width, CV_8UC3, image->data);
Run Code Online (Sandbox Code Playgroud)

由于此缓冲区为RGB格式,OpenCV使用BGR格式,因此我将转换mat为BGR

cv::cvtColor(mat, mat, CV_RGB2BGR);
Run Code Online (Sandbox Code Playgroud)

这是有效的,但是当我检查原始图像时,它的通道也会被反转(因此它们会出错),我不希望这种情况发生.

我想反转mat频道命令离开image-data(我的图像缓冲区)不变.我怎样才能做到这一点?

opencv image-processing

0
推荐指数
1
解决办法
9693
查看次数

二进制或连续图像?

我有一个图像,我想在MATLAB中使用它.但是,我正在寻找一种方法,通过该方法我能够自动发现我的图像是二进制(0和1)或连续的.有一段代码的解决方案吗?

matlab image image-processing

0
推荐指数
1
解决办法
226
查看次数

在android中使用通用图像加载器进行缩放后模糊的imageview

我想在水平viewpager中显示一组图像.我使用了Universal Image Loader一切都很好.但是在缩放之后,即使对于大图像,图像的质量也会丢失.

图像尺寸为1000*1000

我已配置以下设置

Options options = new DisplayImageOptions.Builder()
        .showImageForEmptyUri(R.drawable.ic_launcher)
        .cacheOnDisc()
        .cacheInMemory()
        .imageScaleType(ImageScaleType.POWER_OF_2)
        .build();

config = new ImageLoaderConfiguration.Builder(ctx)
        .defaultDisplayImageOptions(options)
        .build();
ImageLoader.getInstance().init(config);
Run Code Online (Sandbox Code Playgroud)

android image-processing universal-image-loader

0
推荐指数
1
解决办法
4220
查看次数

使用C++实现图像插值

我有一个与使用C++实现图像插值(双三次和双线性方法)有关的问题.我主要担心的是速度.基于我对该问题的理解,为了使插值程序快速有效,可以采用以下策略:

  1. 使用Streaming SIMD Extensions(SSE)进行快速图像插值

  2. 使用多线程或GPU进行图像解释

  3. 快速图像插值算法

  4. C++实现技巧

在这里,我对最后的策略更感兴趣.我设置了一个插值类:

     /**
        * This class is used to perform interpretaion for a certain poin in 
        * the image grid.
        */
        class  Sampling
        {
        public:
            //   samples[0] *-------------* samples[1]
            //              --------------
            //              --------------
            //   samples[2] *-------------*samples[3]
            inline void sampling_linear(unsigned char *samples, unsigned char &res)
            {
                unsigned char res_temp[2];
                sampling_linear_1D(samples,res_temp[0]);
                sampling_linear_1D(samples+2,res_temp[1]);
                sampling_linear_1D(res_temp,res);
            }
        private:
            inline void sampling_linear_1D(unsigned char *samples, unsigned char &res)
            {
            }
        }
Run Code Online (Sandbox Code Playgroud)

这里我只举一个双线性插值的例子.为了使程序运行得更快,采用内联函数.我的问题是这种实施方案是否有效.另外,在解释过程中,如果我给出了使用选择不同插值方法的选项.然后我有两个选择:

  1. 根据插值方法,调用函数对整个图像执行插值.
  2. 对于每个输出图像像素,首先确定其在输入图像中的位置,然后根据插值方法设置,确定插值函数.

第一种方法意味着程序中的代码更多,而第二种方法可能导致效率低下.那么,我怎么能在这两种方案之间做出选择呢?谢谢!

c++ implementation opencv stl image-processing

0
推荐指数
1
解决办法
2292
查看次数

在IOS中像X射线一样扫描图像

我从iPhone相机拍了一张照片.现在我想像X射线扫描一样扫描图像.让我们考虑一下手臂的照片,然后通过编程/算法,它将扫描照片并显示手臂内的骨骼.有没有可以做类似事情的图像处理库?我试图通过使用核心图像的苹果提供的几件事来获得优势,但没有得到任何我想要的东西.

https://developer.apple.com/library/mac/#documentation/graphicsimaging/Conceptual/CoreImaging/ci_intro/ci_intro.html

有人对此有任何解决方案吗?

谢谢

image-processing ios image-scanner

0
推荐指数
1
解决办法
907
查看次数

OpenCV:转换MatOfDMatch,MatOfPoint2f,MatOfKeypoint,找到FundamentalMatrix的aaproach

它可能是一个简单/愚蠢的问题,但我在opencv(android)中有转换问题.

我的目标是从两个连续的图像中计算出相应匹配的基本矩阵.

我编程到目前为止(和工作):

detector.detect(actImg, actKP);
detector.detect(prevImg, prevKP);
descExtractor.compute(prevImg, prevKP, descriptorPrev);
descExtractor.compute(actImg, actKP, descriptorAct);
descMatcher.match(descriptorPrev, descriptorAct, matches);
Features2d.drawMatches(prevImg, prevKP, actImg, actKP,matches, mRgba);
Run Code Online (Sandbox Code Playgroud)

匹配的类型为MatOfDMatch.

现在我将从相互匹配的点中计算出基本矩阵.因此,我必须知道在第二张图像(actKP)中找到第一张图像(prevKP)中的哪些关键点.

Mat fundamental_matrix = Calib3d.findFundamentalMat(nextPts, prevPts, Calib3d.FM_RANSAC,3, 0.99);
Run Code Online (Sandbox Code Playgroud)

第一个问题:如何将MatOfKeyPoints提取/转换为MatOfPoint2f(它们可以传递给findFundamentalMatrix)

第二个问题:如何只将匹配的关键点传递给函数findFundamentalMatrix.这是一个很好的方法吗?

非常感谢advace!

编辑

非常感谢您的详细回复!我把你的代码写成两个函数:

private MatOfPoint2f getMatOfPoint2fFromDMatchesTrain(MatOfDMatch matches2,
        MatOfKeyPoint prevKP2) {
    DMatch dm[] = matches2.toArray();
    List<Point> lp1 = new ArrayList<Point>(dm.length);
    KeyPoint tkp[] = prevKP2.toArray();
    for (int i = 0; i < dm.length; i++) {
        DMatch dmm = dm[i];
        if (dmm.trainIdx < tkp.length) 
            lp1.add(tkp[dmm.trainIdx].pt);
    }
    return new MatOfPoint2f(lp1.toArray(new Point[0]));
} …
Run Code Online (Sandbox Code Playgroud)

android opencv image-processing computer-vision

0
推荐指数
1
解决办法
3050
查看次数

使用拉普拉斯滤波器的图像锐化中的灰色图像

我是Image Processing的新手.

现在,我正在研究拉普拉斯锐化方法.但有一件事我无法理解.我希望你能帮助我.

众所周知,当我们将拉普拉斯滤波后的图像添加到原始图像时,会出现锐化的图像.

但是在获得拉普拉斯滤波后的图像后,我的参考书将这个拉普拉斯滤波后的图像缩放以用于显示目的并获得灰色图像.并将这个灰色的一个添加到原始图像,最后得到一个锐化的图像.

我的问题是我怎么能得到这个灰色的图像.

这是我的代码:

image1=imread('hw1image1.tif');
m=[1 1 1; 1 -8 1; 1 1 1];
f1=imfilter(image1,m);
r=image1-f1;
subplot(1,3,1);
imshow(image1);
subplot(1,3,2);
imshow(f1);
subplot(1,3,3);
imshow(r);
Run Code Online (Sandbox Code Playgroud)

f1是拉普拉斯滤波图像.但是你们都知道它并不是灰色的.我怎么能得到这个灰色的?

编辑:

http://i.imgur.com/9qqXX.jpg(第1张原始图片,第2张灰色图片,第3张锐化图片)

谢谢您的帮助.

matlab image-processing matrix image-enhancement image-editing

0
推荐指数
1
解决办法
7478
查看次数

如何在我的ubuntu 11.10中使用opencv + python检测红球

最近我在ubuntu 11.10中安装了opencv.我计划使用python在opencv中完成一个简单的项目.该项目是使用python从图像中检测出一个红球.我是python和opencv的新手.你能帮我做一下这个项目吗?你能否请一个类似的例如代码.

提前致谢

python opencv image-processing ubuntu-11.10

0
推荐指数
1
解决办法
7398
查看次数

裁剪后的输出图像大于原始大小

当我裁剪使用Bitmap.Clone()它创建比原始图像尺寸较大的输出的图像
的原始大小是:-5 M
和输出裁剪的图像:28男

如何在不损失质量和没有大尺寸的情况下进行裁剪?我的代码是:

private static Image cropImage(Image img, Rectangle cropArea)
{
  var bmpImage = new Bitmap(img);
  Bitmap bmpCrop = bmpImage.Clone(cropArea, bmpImage.PixelFormat);
  img.Dispose();
  bmpCrop.Save(@"D:\Work\CropImage\CropImage\crop.jpg",bmpImage.RawFormat );
  return (Image)(bmpCrop);
}

 static void Main(string[] args)
        {
            string sourceimg = @"D:\Work\Crop Image\CropImage\4032x5808.jpg";
            Image imageoriginal = Image.FromFile(sourceimg);
            int HorX,HorY,VerX,VerY;
            Console.WriteLine("Enter X 1 Cor. ");
            HorX=int.Parse(Console.ReadLine());
            Console.WriteLine("Enter Y 1 Cor. ");
            HorY=int.Parse(Console.ReadLine());
            Console.WriteLine("Enter X 2 Cor. ");
            VerX=int.Parse(Console.ReadLine());
            Console.WriteLine("Enter Y 1 Cor. ");
            VerY= int.Parse(Console.ReadLine());
            Rectangle rect = new Rectangle(HorX,HorY,VerX,VerY);
            cropImage(imageoriginal, rect);
        }
Run Code Online (Sandbox Code Playgroud)

c# image-processing

0
推荐指数
1
解决办法
1043
查看次数