精华内容
下载资源
问答
  • MATLAB图像插值方法的比较

    千次阅读 2019-04-11 15:49:51
    计算机视觉任务中,经常要使用图像插值方法来改变图像的尺寸,如图像金字塔、...matlab里使用插值方法改变图像尺寸的函数是imresize,imresize主要有三个参数,第一个是待处理图像,第二个是缩放尺寸,第三个是可...

    算机视觉任务中,经常要使用图像插值方法来改变图像的尺寸,如图像金字塔、图像超分辨的预处理等,可以说图像插值方法是计算机视觉任务的基本操作。本文对matlab里的图像插值方法进行分析比较。

    首先简单介绍matlab的插值方法,然后对这些方法进行分析比较。matlab里使用插值方法改变图像尺寸的函数是imresize,imresize主要有三个参数,第一个是待处理图像,第二个是缩放尺寸,第三个是可选的插值方法METHOD,以下是matlab官方文档对imresize函数插值方法METHOD的说明:

    METHOD can be a string naming a general interpolation method:
      
           'nearest'    - nearest-neighbor interpolation

          'bilinear'   - bilinear interpolation
     
          'bicubic'    - cubic interpolation; the default method

    METHOD can also be a string naming an interpolation kernel:

          'box'        - interpolation with a box-shaped kernel

           'triangle'   - interpolation with a triangular kernel (equivalent to 'bilinear')

           'cubic'      - interpolation with a cubic kernel  (equivalent to 'bicubic')
      
           'lanczos2'   - interpolation with a Lanczos-2 kernel
      
           'lanczos3'   - interpolation with a Lanczos-3 kernel

    详细见https://ww2.mathworks.cn/help/matlab/ref/imresize.html?s_tid=doc_ta#mw_3957e4e8-42f0-4156-82e2-822a8241b143 。本文主要比较nearest、bilinear、bicubic、lanczos2和lanczos3这几种插值方法。实验所使用的图像为Art:

    Art 1390×1110

     原始图像尺寸为1390×1110,选用的缩放因子为3,使用PSNR与SSIM作为评价标准。本文内容主要分为以下几个部分:

    • 插值方法之间的相似度比较
    • 插值方法下采样上采样的比较——RGB三通道
    • 插值方法下采样上采样的比较——亮度通道y,由rgb2ycbcr转换

    1、插值方法之间的相似度比较

    对于原始尺寸1390×1110的Art图像,按照缩放因子3对原始图像进行下采样,得到低分辨率图像。使用不同的插值方法进行这一操作,比较低分辨率图像之间的相似程度,结果如下:

      nearest bilinear bicubic lanczos2 lanczos3
    nearest   35.115/0.963 36.004/0.969 35.973/0.968 35.961/0.968
    bilinear     45.604/0.997 45.486/0.997 41.652/0.992
    bicubic       63.529/0.999 48.558/0.998
    lanczos2         48.763/0.998
    lanczos3          

    2、插值方法下采样上采样的比较——RGB三通道

    对原始图像,按照缩放因子3对原始图像下采样再上采样,matlab读入彩色图像为RGB三通道图像,上采样下采样操作分别对每一个单通道进行。下表的结果是使用对应插值方法得到的结果原始图像(ground truth)的比较结果:

    down|up nearest bilinear bicubic lanczos2 lanczos3
    nearest 28.320/0.834 30.331/0.883 30.214/0.882 30.207/0.882 30.026/0.876
    bilinear 29.342/0.852 30.382/0.876 30.742/0.885 30.749/0.885 30.893/0.889
    bicubic 29.241/0.851 30.996/0.893 30.918/0.890 30.912/0.890 30.667/0.883
    lanczos2 29.238/0.851 30.671/0.883 30.915/0.890 30.920/0.890 30.998/0.893
    lanczos3 29.089/0.848 30.775/0.886 30.939/0.891 30.944/0.891 30.968/0.

    3、插值方法下采样上采样的比较——亮度通道y,由rgb2ycbcr转换

    对原始图像,首先将读入的RGB彩色图像使用matlab的函数rgb2ycbcr转换到ycbcr三通道,然后再将y通道分离出来,仅对y通道做下采样再上采样。下表的结果是对y通道使用对应的插值方法得到的结果原始图像的y通道比较的结果:

    down|up nearest bilinear bicubic lanczos2 lanczos3
    nearest 28.320/0.834 30.331/0.883 30.214/0.882 30.207/0.882 30.026/0.876
    bilinear 29.342/0.852 30.382/0.876 30.742/0.885 30.749/0.885 30.893/0.889
    bicubic 29.241/0.851 30.996/0.893 30.918/0.890 30.912/0.890 30.667/0.883
    lanczos2 29.238/0.851 30.671/0.883 30.915/0.890 30.920/0.890 30.998/0.893
    lanczos3 29.089/0.848 30.775/0.886 30.939/0.891 30.944/0.891 30.968/0.892

     

    展开全文
  • 本周的作业是自己通过公式编写图像旋转与缩放的代码。今天先通过调用函数的方法来实现。  图像的旋转: A=imread('2.jpg'); J=imrotate(A, 30); subplot(1,2,1);imshow(A);title('原图'); subplot(1,2,2);...

      本周的作业是自己通过公式编写图像旋转与缩放的代码。今天先通过调用函数的方法来实现。

      图像的旋转:

    A=imread('2.jpg');
    J=imrotate(A, 30);
    subplot(1,2,1);imshow(A);title('原图');
    subplot(1,2,2);imshow(J);title('旋转后的图');
    

      运行结果:

     

      图像缩放:

    I=imread('2.jpg');
    F=imresize(I,1.5,'nearest');
    imwrite(F,'3.jpg');
    S=imresize(I,0.5,'nearest');
    imwrite(S,'4.jpg');
    J=imresize(I, [190,400],'nearest');
    imwrite(J,'5.jpg');
    figure(1);imshow(I);
    figure(2);imshow(F);
    figure(3);imshow(S);
    figure(4);imshow(J);
    

      运行结果:

     

    2019-03-09

    21:53:03

    转载于:https://www.cnblogs.com/lyxyhhxbk/p/10503247.html

    展开全文
  • 1、图像基本变换:利用图像变换函数imresize、imrotate 进行缩放与旋转变换。将图像放大1.25倍I = imread(cameraman.tif);J = imresize(I,1.25);imshow(I);figure, imshow(J); 将图像缩小0. 5倍J = imresize(I,0....

    1、图像基本变换:利用图像变换函数imresizeimrotate 进行缩放与旋转变换。

    将图像放大1.25

    I = imread('cameraman.tif');

    J = imresize(I,1.25);

    imshow(I)figure, imshow(J)

     

    将图像缩小0. 5

    J = imresize(I,0. 5);

    figure, imshow(J)

       

    将图像旋转30

    J = imrotate(I,35);

    figure, imshow(J)

     

    2、图像去噪:利用图像加噪函数imnoise与滤波函数medfilt2进行图像去噪处理。

    J = imnoise(I,'salt & pepper',0.02);

    L = medfilt2(J,[3 3]);

    figure, imshow(J)

    figure, imshow(L)

     

    3、图像平滑:利用低通滤波模板和卷积函数进行图像平滑处理。   

     


    G= conv2 (I,B);

    figure; imshow( uint8( G) );

     

    4  图像锐化:利用高通滤波模板和卷积函数进行图像锐化处理。

     


    G= conv2(I,H);

    figure; imshow( uint8( G) ); 

     

    5 图像边缘提取

    BW = edge(I, 'canny');

    figure;imshow(BW );

     

     

    6、图像区域分割

    Ic = imcomplement(I);

    BW = im2bw(Ic, graythresh(Ic));

    figure;imshow(BW );

    展开全文
  • 图像缩放

    2016-11-20 21:34:02
    最邻近插值 和matlab自带函数完全一样。...% 将原图像 I 以 1:ratio 的倍率缩放得到目标图像 nI % 插值方法为 最临近插值 [n m mm] = size(I); new_n = round(n * ratio); new_m = round(m * ratio); nI =

    最邻近插值

    和matlab自带函数完全一样。

    function nI = Nearest_Neighbor(I, ratio)
    
    % 将原图像 I 以 1:ratio 的倍率缩放得到目标图像 nI
    % 插值方法为 最临近插值
    
    [n m mm] = size(I);
    new_n = round(n * ratio);
    new_m = round(m * ratio);
    nI = zeros(new_n, new_m, mm, 'uint8');
    
    for i = 1 : new_n
        for j = 1  : new_m
            x = (j-0.5) / new_m * m + 0.5;
            y = (i-0.5) / new_n * n + 0.5;
            nI(i, j, :) = I(round(y), round(x), :);
        end
    end

    双线性插值

    和matlab自带函数有最多为1的误差,感觉是由于matlab进行了优化,没有进行浮点数运算导致的误差。

    function nI = Bilinear_Interpolation(I, ratio)
    
    % 将原图像 I 以 1:ratio 的倍率缩放得到目标图像 nI
    % 插值方法为 双线性插值
    
    [n m mm] = size(I);
    new_n = round(n * ratio);
    new_m = round(m * ratio);
    nI = zeros(new_n, new_m, mm, 'uint8');
    
    I = [I(1,:,:); I; I(end,:,:)];
    I = [I(:,1,:), I, I(:,end,:)];
    I = double(I);
    
    for i = 1 : new_n
        for j = 1  : new_m
            x = (j-0.5) / new_m * m + 1.5;
            y = (i-0.5) / new_n * n + 1.5;
            r1 = floor(y); r2 = ceil(y);
            c1 = floor(x); c2 = ceil(x);
            Q11 = I(r1, c1, :); Q12 = I(r1, c2, :);
            Q21 = I(r2, c1, :); Q22 = I(r2, c2, :);
            R1 = Q11 + (Q12-Q11)*(x-c1);
            R2 = Q21 + (Q22-Q21)*(x-c1);
            nI(i, j, :) = uint8(R1 + (R2-R1)*(y-r1));
        end
    end

    展开全文
  • VC++ matlab图像处理

    2013-09-15 15:17:54
    12.4.2 图像缩放 12.4.3 图像旋转 12.4.4 图像剪切 12.5 空间变换 12.5.1 仿射变换( affine transformation ) 12.5.2 透视变换 (Perspective Transformation) 12.5.3 空间变换的 MATLAB 函数 12.5.4 空间...
  • 对于matlab初学者提供简单的图像缩放算法,可以帮助初学者更好掌握matlab一些基本的函数和方法。可读性比较高
  • Matlab 图像特征提取

    万次阅读 2018-10-11 10:50:59
    图像处理过程中,尤其是图像相似度的匹配,在图片量比较小的情况下,深度学习的效果往往达不到期望,所以需要利用传统图像处理的方法,对图像特征进行提取,常用的方法有lbp,hog,sift,surf。 lbp算法主要是对图片...
  • matlab图像旋转和放大

    2012-12-05 17:13:59
    图像进行缩放及旋转,采用不同的差值方法,并加以比较 matlab GUI做的数字图像处理。 1) 对图像放大2倍、5倍,采用最近内插、二次线性内插、三次内插,比较其效果。 2) 对图像依次旋转30°、60°,及一次性旋转...
  • 图像缩放功能的插值算法 简介 在 Matlab 下对图像分别采用最近邻插值、双线性插值、三次插值 3 种算法进行 0. 5 倍、3 倍缩放,对这 3 种算法实现的缩放效果和原图做出比较。 最近邻插值算法 最近邻插值算法又称为零...
  • MATLAB图像的基本运算

    2020-05-25 22:30:02
    对一幅图像进行基本运算,加入噪声,求均值,缩放、旋转等操作 实现掌握图像处理的各种方法,对各个函数有更深的理解。 实验任务 实验要求设计一个程序完成下列要求: 1、 读出girl.bmp这幅图像,完成基本点运算,并...
  • 实验二图像几何变换与插值 一 实验目的 巩固图像处理编程的步骤格式理解数据插值及图像几何变换的原理掌握图像几何变换的实现方法 二 实验内容 1 理解反向变换的实现思路 2 图像缩放及插值 Matlab取整命令floor, ...
  • matlab图像显示 imagesc 和imshow

    千次阅读 2015-05-10 00:15:45
    image函数是显示图像的最基本的方法。该函数还产生了图像对象的句柄,并允许对对象的属性进行设置。 imagesc函数也具有image的功能,所不同的是imagesc函数还自动将输入数据比例化,以全色图的方式显示。imagesc...
  • MATLAB图形图像处理

    热门讨论 2011-01-03 12:20:11
    12.4.2 图像缩放 12.4.3 图像旋转 12.4.4 图像剪切 12.5 空间变换 12.5.1 仿射变换( affine transformation ) 12.5.2 透视变换 (Perspective Transformation) 12.5.3 空间变换的 MATLAB 函数 12.5.4 空间...
  • 概念定义 动态范围:灰度跨跃的值域称为动态范围。上限取决于饱和度,下限取决于噪声。 对比度:一幅图像中最高和最低灰度级间的灰度差。...在放大、缩放、旋转和几何校正中广泛使用,是基本的重取样方法。 最...
  • MATLAB 函数 将图像 I 转换为双精度。I 可以是灰度强度图像、真彩色图像或二值图像。 im2double 将整数数据类型的输出重新缩放到范围 [0, 1]。 调用格式如下: I2 = im2double(I) I2 = im2double(I,'indexed') I...
  • 基于临插值和双线性内插值法 1、 读取与显示输入图像: %输入图像和显示图像 function []=readShow() ima=imread('test.jpg'); %输入图像 ...图像缩放代码,并显示缩放处理前后的图像 这...
  • 12.4.2 图像缩放 12.4.3 图像旋转 12.4.4 图像剪切 12.5 空间变换 12.5.1 仿射变换( affine transformation ) 12.5.2 透视变换 12.5.3 空间变换的 MATLAB 函数 12.5.4 空间变换实例 12.6 图像融合...
  • MATLAB图像处理工具箱提供了3种插值方法:第一种是最近邻插值(nearest neighbor interpolation),最近邻插值的输出像素值等于输入图像中与其最临近的像素点的值;第二种是双线性插值(bilinear interpolation),...
  • matlab图像显示函数

    千次阅读 2014-11-28 10:00:00
    1 image函数是显示图像的最基本的方法。该函数还产生了图像对象的句柄,并允许对对象的属性进行设置。 2 3 imagesc函数也具有image的功能,所不同的是imagesc函数还自动将输入数据比例化,以全色图的方式显示。...
  • 数字图像处理(Digital Image ... 本文利用MATLAB图像处理工具箱,根据需求进行程序的功能分析和界面设计,实现数字图像的灰度处理、亮度处理、截图、缩放、旋转、噪声、滤波、直方图统计、频谱分析、颜色模型转换等。
  • 使用Matlab实现对图片的缩放

    千次阅读 2017-03-23 21:54:13
    在做图像处理的时候,有时需要对图片的像素进行放大或则...这里只讲缩放到固定像素的方法。 clear;clc; %清除以前的数据 folderName = dir('train'); %显示train文件夹下的文件和文件夹for i = 1 : length(folderNam
  • 利用图像内插法放大缩小图像 Matlab

    千次阅读 2017-03-13 22:27:28
    利用图像内插法放大缩小图像 Matlab内插是利用已知数据来估计未知位置的数值进行处理,基础的内插法有最近邻内插法,双线性内插法。本文将对灰度图并利用Matlab来仿真一下这两种方法...在此图中,我们把放大的图像缩放
  • 1.编程实现对图像的任意比例的放大及缩小; 2.编程实现对图像的任意角度旋转; 3.解决锯齿等图像不平滑问题(邻近法,...4.将自己实现的方法matlab方法进行比较; 5.针对黑白、灰度、彩色三类图像分别测试。
  • 该平台采用C#.Net和Matlab混合编程方法,将Matlab图像处理功能与.Net开发的Web网站结合起来,用户无需安装数字图像软件和掌握专业的图像处理技能,利用浏览器便可以对数字图像进行图像变换、增强、压缩、分割、缩放等...
  • MATLAB数字图像处理 文件:打开、显示、重载、RGB变灰度、保存; 几何变换:垂直、水平镜像,图像转置、平移、缩放、旋转; 正交变换:FFT、DFT、DCT、DST、DHT、DWasht; 灰度处理:反色、直方图均衡、阈值变换、...
  • 12.4.2 图像缩放 12.4.3 图像旋转 12.4.4 图像剪切 12.5 空间变换 12.5.1 仿射变换( affine transformation ) 12.5.2 透视变换 (Perspective Transformation) 12.5.3 空间变换的 MATLAB 函数 12.5.4 空间...

空空如也

空空如也

1 2 3 4 5
收藏数 81
精华内容 32
关键字:

matlab图像缩放方法

matlab 订阅