• 读入一幅图像，对其进行等比例、不等比例缩放
• 使用临近插值法和双线性插值法进行图像处理，将彩色图像缩放之后仍输出彩色图像
• 目录一、插值与图像缩放二、最近邻插值1、原理2、代码实现三、双线性插值1、原理2、代码实现 一、插值与图像缩放   首先举个例子说明插值过程，先看看matlab的插值函数 interp() 吧： x = -2 : 1 : 2; y = -2 : 1 ...
• Write a function Reduce / Expand that has an image as an input and the output should be re-sampled copy of half / twice the width and height of the input image.
• 【实例简介】不调用方法，手动实现图像缩放【实例截图】【核心代码】% MATLAB script for Assessment Item-1% Task-1clear; close all; clc;%% Step-1: Load input image and conversion of input image to grey-...

【实例简介】不调用方法，手动实现图像缩放
【实例截图】

【核心代码】
% MATLAB script for Assessment Item-1
clear; close all; clc;
%% Step-1: Load input image and conversion of input image to grey-scale image
figure;
imshow(I);
Igray = rgb2gray(I);
figure;
imshow(Igray);
title('Conversion of input image to greyscale', 'FontSize', 18);
%% Step-2: Nearest-neighbor interpolation
n = 3; % multiple of expand
[w,h] = size(Igray); % the size of greyscale
Inearest = zeros(w*n,h*n); % build a matrix which size is triple times of original image
for row1 = 1:w*n % build a circluation to traverse every pixel
for col1 = 1:h*n
row = round(row1/n); % copy the value of pixel based on index
col = round(col1/n);
if row<1
row = 1;
end
if row > w
row = w;
end
if col < 1
col = 1;
end
if col > h
col = h;
end
% ensure the index of pixel is positive integer
Inearest(row1,col1) = Igray(row,col); % use pixels of original image to fill output image
end
end
Inearest=uint8(Inearest); % Conversion of double to uint8
figure;
imshow(Inearest);
colorbar;
axis on;
title('Figure 1: Nearest-neighbor interpolation', 'FontSize', 22);
%% Step-3: Bilinear Interpolation
Ibilinear = zeros(w*n,h*n); % build a matrix which size is triple times of original image
for row2 = 1:w*n % build a circluation to traverse every pixel
for col2 = 1:h*n
row = row2/n; % copy the value of pixel based on index
col = col2/n;
dec1 = row-floor(row); % get fractional part for bilinear interpolation formula
dec2 = col-floor(col);
if row < 1
row = 1;
end
if row > w
row = w;
end
if col < 1
col = 1;
end
if col > h
col = h;
end
% ensure the index of pixel is positive integer
Ibilinear(row2,col2) = (1-dec2)*(1-dec1)*Igray(floor(row),floor(col)) ...
dec2*(1-dec1)*Igray(floor(row),ceil(col)) ...
(1-dec2)*dec1*Igray(ceil(row),floor(col)) ...
dec2*dec1*Igray(ceil(row),ceil(col));
% use pixels of original image to fill output image based on bilinear interpolation formula
end
end
Ibilinear = uint8(Ibilinear); % Conversion of double to uint8
figure;
imshow(Ibilinear);
colorbar;
axis on;
title('Figure 2: Bilinear interpolation', 'FontSize', 22);

展开全文
• 包含最近邻插值、双线性插值和三次插值的matlab代码，自己已经测试过，使用的时候注意将图片转换为位图，否则会出现错误。
• MATLAB图像缩放,matlab实现图像缩放,matlab源码
• matlab图像缩放 包含实验程序和结果
• %======用matlab图像进行缩放(双线性插值法)clear; %此题是用双线性插值法实现图像缩放I=imread('f.jpg');%读入原图像，只需将此处的文件换成要变换的图片即可%图像属性% Filename: 'f.jpg'%FileModDate: '24-Aug-...

%======用matlab对图像进行缩放(双线性插值法)
clear;   %此题是用双线性插值法实现图像缩放
%读入原图像，只需将此处的文件换成要变换的图片即可
%图像属性
%  Filename: 'f.jpg'
%
FileModDate: '24-Aug-2008 16:50:30'
%           FileSize: 20372
%
Format: 'jpg'
%      FormatVersion: ''
%              Width: 480
%
Height: 640
%           BitDepth: 8
%          ColorType:
'grayscale'
%    FormatSignature: ''
%    NumberOfSamples: 1
%
CodingMethod: 'Huffman'
%      CodingProcess: 'Sequential'
%
Comment: {}
[rows,cols]=size(I);
K1 = str2double(inputdlg('请输入行缩放倍数', 'INPUT scale factor', 1,
{'0.5'}));%行默认变为原来的0.5倍
K2 = str2double(inputdlg('请输入列缩放倍数', 'INPUT
scale factor', 1, {'0.4'}));%列默认变为原来的0.4倍
width = K1 * rows;
height = K2 * cols;
Out = uint8(zeros(width,height));  %创建输出图像矩阵
widthScale = rows/width;
heightScale = cols/height;
for x = 6:width - 6           % 6是为了防止矩阵超出边界溢出
for y = 6:height - 6
oldX = x * widthScale;     % oldX,oldY为原坐标，x,y为新坐标
oldY = y * heightScale;
if (oldX/double(uint16(oldX)) == 1.0) &
(oldY/double(uint16(oldY)) == 1.0)
Out(x,y) = I(int16(oldX),int16(oldY));%若oldX，oldY为整数，直接赋值
else
a = double(uint16(oldX));
b = double(uint16(oldY));
x11 = double(I(a,b));                % x11 赋值为 I(a,b)
x12 = double(I(a,b+1));              % x12 赋值为 I(a,b+1)
x21 = double(I(a+1,b));              % x21 赋值为 I(a+1,b)
x22 = double(I(a+1,b+1));            % x22 赋值为
I(a+1,b+1)
Out(x,y) = uint8( (b+1-oldY) * ((oldX-a)*x21 +
(a+1-oldX)*x11) + (oldY-b) * ((oldX-a)*x22 +(a+1-oldX) * x12) );    %
用双线性插值计算公式计算
end
end
end
imshow(I);
figure;
imshow(Out);
%===============使用matlab对图片进行缩放(最近邻域法)
clear;  %此题是用最近邻域法实现图像缩放
%图像属性
%
Filename: 'f.jpg'
%       FileModDate: '24-Aug-2008 16:50:30'
%
FileSize: 20372
%             Format: 'jpg'
%      FormatVersion:
''
%              Width: 480
%             Height: 640
%
BitDepth: 8
%          ColorType: 'grayscale'
%
FormatSignature: ''
%    NumberOfSamples: 1
%       CodingMethod:
'Huffman'
%      CodingProcess: 'Sequential'
%            Comment:
{}
[rows,cols]=size(I);
K1 = str2double(inputdlg('请输入行缩放倍数', 'INPUT scale factor', 1,
{'0.6'}));%行默认变为原来的0.6倍
K2 = str2double(inputdlg('请输入列缩放倍数', 'INPUT
scale factor', 1, {'0.4'}));%列默认变为原来的0.4倍
width = K1 * rows;
height = K2 * cols;
im2 = uint8(zeros(width,height)); %定义输出图像矩阵
widthScale = rows/width;
heightScale = cols/height;
for x = 6:width - 6         %为防止矩阵溢出而选择的参数6
for y = 6:height - 6
oldX = x * widthScale; %oldX，oldY为原坐标，x，y为新坐标
oldY = y * heightScale;
if (oldX/double(uint16(oldX)) == 1.0) &
(oldY/double(uint16(oldY)) == 1.0)
im2(x,y) = I(int16(oldX),int16(oldY));
else
a = double(round(oldX));
b = double(round(oldY)); %若不是整数四舍五入后把临近值赋过去
im2(x,y) = I(a,b);
end
end
end
imshow(I); %输出原图像
figure;
imshow(im2); %输出缩放后图像
%====================用matlab对图像进行旋转(双线性插值法)
clear;%此题是用最近邻域法实现图像旋转
[m,n,p]=size(im1);
%
将图像旋转30度
a=0.5; %a=sin30=0.5
b=0.866;  %b=cos30=0.866
row=n*a+m*b;
col=n*b+m*a;
for
i=1:row                                %先把图象填充成全黑
for j=1:col
im2(i,j,:)=uint8(0);
end
end
for i=1:m                                          %把原图象像素点旋转后变为新图象点
for j=1:n
xx=round(abs((i-m/2)*b-(j-n/2)*a+row/2));
yy=round(abs((i-m/2)*a+(j-n/2)*b+col/2));
for k=1:3
im2(xx,yy,k)=im1(i,j,k);
end
end
end
temp1=uint8(0);
temp2=uint8(0);
temp3=uint8(0);
for i=1:row                                        %把画面上的空点按照最近邻插值法填充
temp1=uint8(0);
temp2=uint8(0);
temp3=uint8(0);
for j=1:col                                    %找到最右的图象边界点
if
(im2(i,j,:)==uint8(0))
else
kk=j;
end
end
for j=1:kk
if (im2(i,j,:)==uint8(0))
im2(i,j,1)=temp1;
im2(i,j,2)=temp2;
im2(i,j,3)=temp3;
else
temp1=im2(i,j,1);
temp2=im2(i,j,2);
temp3=im2(i,j,3);
end
end
end
imshow(im1);
figure;
imwrite(im1,'5.jpg');
%保存原图像
imshow(im2);
imwrite(im2,'6.jpg');%保存旋转后图像
%======================用matlab对图片进行旋转(最近邻域法)
clear;%此题是用最近邻域法实现图像旋转
[m,n,p]=size(im1);
%
将图像旋转30度
a=0.5; %a=sin30=0.5
b=0.866;  %b=cos30=0.866
row=n*a+m*b;
col=n*b+m*a;
for
i=1:row                                %先把图象填充成全黑
for j=1:col
im2(i,j,:)=uint8(0);
end
end
for i=1:m                                          %把原图象像素点旋转后变为新图象点
for j=1:n
xx=round(abs((i-m/2)*b-(j-n/2)*a+row/2));
yy=round(abs((i-m/2)*a+(j-n/2)*b+col/2));
for k=1:3
im2(xx,yy,k)=im1(i,j,k);
end
end
end
temp1=uint8(0);
temp2=uint8(0);
temp3=uint8(0);
for i=1:row                                        %把画面上的空点按照最近邻插值法填充
temp1=uint8(0);
temp2=uint8(0);
temp3=uint8(0);
for j=1:col                                    %找到最右的图象边界点
if
(im2(i,j,:)==uint8(0))
else
kk=j;
end
end
for j=1:kk
if (im2(i,j,:)==uint8(0))
im2(i,j,1)=temp1;
im2(i,j,2)=temp2;
im2(i,j,3)=temp3;
else
temp1=im2(i,j,1);
temp2=im2(i,j,2);
temp3=im2(i,j,3);
end
end
end
imshow(im1);
figure;
imwrite(im1,'5.jpg');
%保存原图像
imshow(im2);
imwrite(im2,'6.jpg');%保存旋转后图像

展开全文
• matlab实现图像缩放 缩放同样是仿射变换的一种特例，它接受水平和垂直两个方向的缩放值。 matlab 实现水平，垂直，水平垂直缩放： clear all close all clc img = imread('test.jpg'); %读取输入图片的...
matlab实现图像的缩放
缩放同样是仿射变换的一种特例，它接受水平和垂直两个方向的缩放值。
matlab 实现水平，垂直，水平垂直缩放：
clear all
close all
clc
[h,w,d] = size(img); %获取行和列，即原图的高度和宽度
xscale = 3;
yscale = 3;
ht = floor(h./xscale);
wt = floor(w./yscale);
%zoo = zeros(ht,w,d);
for i = 1:ht
for j = 1:w
% for k = 1:d
%zoo(i,j,d) = img(floor(i*xscale),j,d);
% end
zooh(i,j) = img(floor(i*xscale),j);
end
end

for i = 1:h
for j = 1:wt
zoow(i,j) = img(i,floor(j*xscale));
end
end

for i = 1:ht
for j = 1:wt
zoohw(i,j) 
展开全文
• ## Matlab——图像缩放（插值法）

万次阅读 多人点赞 2018-07-30 15:49:36
用双线性内插法实现位深度为8的灰度图像缩放。   思路：  输入原图像以及缩放图像的像素要求（宽度*高度），处理后输出新图像。  我是用matlab来实现scale(input_img,scale_size)函数的，输入图像路径...
实验内容：
用双线性内插法实现位深度为8的灰度图像的缩放。

思路：
输入原图像以及缩放后图像的像素要求（宽度*高度），处理后输出新图像。
我是用matlab来实现scale(input_img,scale_size)函数的，输入图像路径以及要求实现的宽度scale_w和高度值scale_h即可。通过matlab把原图像转化为img矩阵，这样矩阵img(a, b)元素的值就是原图像高度为a，宽度为b处的像素值。
设处理前后图像的宽度和高度分别为w、h，scale_w、scale_h。

如上图所示，row对应的是高度，设为x轴；col对应的是宽度，设为y轴；value对应的是灰度值，设为z轴。

通过缩放比例，可以求得新图像B在(i,j)处对应原图像的点为(x,y)（其中x= i*h/scale_h，y= j*w/scale_w）。
但是这两个值可能为浮点数，而像素中的位置是整数，所以这个点在原图像中对应的可能是“虚”点。所以，我们需
要根据找该“虚”点周围的四个点来进行双线性插值得到新图像的灰度值。我们应该取的是(x,y)邻近的四个像素
(x0,y0) 、(x0,y1) 、(x1,y0) 、(x1,y1)，它们对应的灰度值为f(x0,y0) 、f(x0,y1)、 f(x1,y0)、 f(x1,y1)。

先对x方向进行插值，再对y方向进行插值，计算如下：

反过来，先对y方向：

显然，邻近像素的x1-x0 = y1-y0 = 1     整理式子得到：

这里u、v分别是x、y的小数部分，即u = x - x0; v = y - y0
要注意的是：上述公式img(a,b)中的a和b不能小于1，所以当x和y小于1时需要将其重新赋值为1。

代码：
function output_img = scale(input_img, scale_size)
%Input - input_img is a two-dimensional matrices storing image
%      - scale_size is a tuple of [width, height] defining the spatial resolution of output
%Output - output_img is the same as input_img

[h,w] = size(img); %获取行和列，即原图的高度和宽度

scale_w = scale_size(1); %根据输入获得缩放后的新宽度
scale_h = scale_size(2); %根据输入获得缩放后的新高度
output_img = zeros(scale_h, scale_w); %初始化

for i = 1 : scale_h         %缩放后的图像的（i,j）位置对应原图的（x,y）
for j = 1 : scale_w
x = i * h / scale_h;
y = j * w / scale_w;
u = x - floor(x);
v = y - floor(y); %取小数部分

if x < 1           %边界处理
x = 1;
end

if y < 1
y = 1;
end

%用原图的四个真实像素点来双线性插值获得“虚”像素的像素值
output_img(i, j) = img(floor(x), floor(y)) * (1-u) * (1-v) + ...
img(floor(x), ceil(y)) * (1-u) * v + ...
img(ceil(x), floor(y)) * u * (1-v) + ...
img(ceil(x), ceil(y)) * u * v;
end
end

imwrite(uint8(output_img), '../output_img.png'); %保存处理后的图像
imshow(input_img); %显示原图
figure,imshow(uint8(output_img)) %显示处理后的图像

运行时若图片在代码上一级目录，则输入scale('../a.png', [450,300]);

效果图：
原图为384*256：
缩小成192*128：
放大成450*300：
缩放成500*200：

//
转载：https://blog.csdn.net/Stella_Chan/article/details/78025020?locationNum=5&fps=1
展开全文
• ## matlab实现图片缩放

千次阅读 2019-07-07 15:38:37
zoomNum为缩放系数 height和width的命名可能反了，不要在意这些细节… I=imread('tissue.png'); figure(1); imshow(I) zoomNum=0.5; [fWidth fHeight]=size(I); fHeight=fHeight/3; cWidth=floor(fWidth*...
• 利用matlab进行图像的一些操作处理 缩放和旋转功能的实现
• ## Matlab实现图像的比例缩放

万次阅读 多人点赞 2018-05-10 22:35:49
以灰度图像circuit.tif为例，利用Matlab图像处理工具箱中的imresize函数对图像进行比例缩放变换。要求：创建4个figure窗口（不可以用subplot，显示不出来放大效果），分别用于显示原始图像、等比例放大1.5倍后的图像...
• 自编Matlab函数实现图像缩放 自编Matlab函数实现图像缩放 自编Matlab函数实现图像缩放 自编Matlab函数实现图像缩放 自编Matlab函数实现图像缩放
• % matlab库函数，调用imresize可以重新生成不同尺寸的图片   cubic_factor函数 % 距离系数计算公式 % ┏ 1 - 2 *Abs(x)^ 2 +Abs(x)^ 3 　, 0 (x)< 1 % S(x)=｛ 4 - 8 *Abs(x)+ 5 *...
• Matlab图像缩放 Matlab实现函数代码如下： clc I=rgb2gray(imread('Campus-scenery2sk.JPG')); figure,imshow(I); title('原图'); reduceI=imresize(I,0.5); %原图像I缩小0.5倍 figure,imshow(reduceI); title('...
• matlab开发-使用交叉像素插值进行图像缩放。使用跨像素插值算法放大NxM图像
• ## MATLAB:图片缩放

千次阅读 2018-10-21 17:31:33
将指定文件夹中的所有图片一次缩小后保存，名字与原来的名字相同。 核心语句： S=imresize(rgb,1/6,'nearest'); 整体代码： file_path = 'F:\2018\'; % 图像文件夹路径 img_path_list = dir(strcat(file_path,'*....
• 可以通过给定的正因子缩放给定的图像。 复制nearest_neighbor_zoom.m 文件和应该放大到您的工作目录的图像文件。 如果图像文件的名称是 image.jpg 并且需要的缩放系数是 2.23， 在命令窗口上运行以下命令。 Nearest_...
• matlab开发-图像处理使用双线性插值缩放动画。本文采用双线性插值法对图像进行正整数因子缩放
• matlab开发-使用相邻插值缩放动画。最近邻插值用于将图像缩放任意
• - imres 是用于将图像重新采样为新图像的功能。 - imrot 是将图像旋转任意角度的功能（imres 是此功能的先决条件）。 - imsca 是一种放大或缩小具有任意比例因子的图像的功能（imres 是此功能的先决条件）
• 基于matlab图像放大代码，操作简单速度快。
• 这里介绍matlab gui设计之缩放，实现任意控件的缩放和不缩放设计 这里考虑实际需要，缩放GUI时并不想缩放全部控件，比如只想缩放坐标轴显示的波形，而设定按钮和串口配置等保持位置和大小不变 如果仅仅按照matlab...
• 三角网格与鱼眼变换相结合的图像缩放方法
• matlab缩放函数图像代码数字可缩放矢量图形（SVG）导出 将2D和3D Matlab图转换为可缩放矢量格式（SVG）。 此格式由W3C（）指定，可以使用Internet浏览器查看和打印。 添加了对过滤器，剪切和刻度标记扩展的初步支持...
• matlab开发-图像局部缩放图像局部放大图像放大。这有助于将图像的局部斑块放大为较大的斑块，以比较细节。
• t=imread('图像处理.png'); [m,n,dep]=size(t); rm=3630; rn=2355; rt=zeros(rm,rn,dep); for i=1:rm for j=1:rn x=i*m/rm; y=j*n/rn; u=x-floor(x); v=y-floor(y); if x<1 x=1; end if y<1 y=1; end rt(i,j,:...
• 参考：https://www.cnblogs.com/zangyu/p/5395504.html对图像进行固定大小的缩放clear; clc; ％清除以前的数据 folderName = dir('train'); ％显示train文件夹下的文件和文件夹 for i = 1 : length(folderNa...

...

matlab 订阅