数字图像处理实验(4):PROJECT 02-04 [Multiple Uses],Zooming and Shrinking Images by Bilinear Interpolation 标签: 图像处理MATLAB
实验要求:
Zooming and Shrinking Images by Bilinear Interpolation
Objective
To manipulate another technique of zooming and shrinking images by bilinear interpolation.
Main requirements:
Ability of programming with C, C++, or Matlab.
Instruction manual:
(a) Write a computer program capable of zooming and shrinking an image by bilinear interpolation. The input to your program is the desired size of the resulting image in the horizontal and vertical direction. You may ignore aliasing effects.
(b) Download Fig. 2.19(a) and use your program to shrink this image from 1024 x 1024 to 256 x 256 pixels.
(c) Use your program to zoom the image in (b) back to 1024 x 1024. Explain the reasons for their differences.
这次实验通过自己编写双线性内插法的程序来对图像进行缩放。
简要介绍一下双线性内插法的原理:
第一种情况:
- 点(i-b, j-a)与点(i-b, j+rate-a)插值得到点(1-b, j)处的灰度值;
- 点(i+rate-b, j-a)与点(i+rate-b, j+rate-a)插值得到点(i+rate-b, j)处的灰度值;
- 使用前面得到的结果,即点(i-b, j)与点(i+rate-b, j)进行插值得到点(i,j)处的灰度值。
第二种情况:
- 点(i-b, j-a)与点(i+rate-b, j-a)插值得到点(i, j-a)处的灰度值;
- 点(i-b, j+rate-a)与点(i+rate-b, j+rate-a)插值得到点(i, j+rate-a)处的灰度值;
- 使用前面得到的结果,即点(i, j-a)与点(i, j+rate-a)进行插值得到点(i,j)处的灰度值。
从示意图来看比较好理解了,详细的资料还可以参看下面的资料链接:
百度百科:双线性插值
双线性插值(Bilinear Interpolation)
代码部分:
matlab 函数文件名: Bilinear_Interpolation.m
%%
function img=Bilinear_Interpolation(a,rate)
[m,n]=size(a);
ratex=rate-1;
img=zeros(m+ratex*(m-1),n+ratex*(n-1));
for i=1:m
for j=1:n
img(i+ratex*(i-1),j+ratex*(j-1))=a(i,j);
end;
end;
img=double(img);
for i=1:m+ratex*(m-1)
for j=1:n+ratex*(n-1)
a=mod(j-1,rate);
b=mod(i-1,rate);
if a~=0 && b==0
img(i,j)=round((a*img(i,j+(rate-a))+(rate-a)*img(i,j-a))/rate);
end;
if a==0 && b~=0
img(i,j)=round((b*img(i+(rate-b),j)+(rate-b)*img(i-b,j))/rate);
end;
if a~=0 && b~=0
img(i,j)=round((b*(a*img(i-b,j+(rate-a))+(rate-a)*img(i-b,j-a))/rate+(rate-b)*(a*img(i+(rate-b),j+(rate-a))+(rate-a)*img(i+(rate-b),j-a))/rate)/rate);
end;
end;
end;
img=uint8(img);
程序中调用编写好的Bilinear_Interpolation函数,查看结果:
%%
clear all;
clc;
close all;
%%
img_name = 'general_img_1024.jpg'
img = imread(img_name);
figure(1)
imshow(img)
title('原图像');
img1 = imresize(img, [256, 256]);
figure(2)
imshow(img1)
img2 = Bilinear_Interpolation(img1, 4);
figure(3)
imshow(img2)
title('双线性内插法放大')
%%
[a, b] = size(img);
n = max(a, b);
c = 1024 / n;
img3 = Bilinear_Interpolation(img1, c);
figure(4)
imshow(img3)
title('双线性内插法缩小')
运行结果:
数字图像处理实验(4):PROJECT 02-04 [Multiple Uses],Zooming and Shrinking Images by Bilinear Interpolation 标签: 图像处理MATLAB的更多相关文章
- 数字图像处理实验(3):PROJECT 02-03, Zooming and Shrinking Images by Pixel Replication 标签: 图像处理matlab 20
实验要求: Zooming and Shrinking Images by Pixel Replication Objective To manipulate a technique of zoomi ...
- 数字图像处理实验(总计23个)汇总 标签: 图像处理MATLAB 2017-05-31 10:30 175人阅读 评论(0)
以下这些实验中的代码全部是我自己编写调试通过的,到此,最后进行一下汇总. 数字图像处理实验(1):PROJECT 02-01, Image Printing Program Based on Half ...
- 数字图像处理实验(10):PROJECT 05-01 [Multiple Uses],Noise Generators 标签: 图像处理MATLAB 2017-05-26 23:36
实验要求: Objective: To know how to generate noise images with different probability density functions ( ...
- 数字图像处理实验(5):PROJECT 04-01 [Multiple Uses],Two-Dimensional Fast Fourier Transform 标签: 图像处理MATLAB数字图像处理
实验要求: Objective: To further understand the well-known algorithm Fast Fourier Transform (FFT) and ver ...
- 数字图像处理实验(16):PROJECT 06-03,Color Image Enhancement by Histogram Processing 标签: 图像处理MATLAB 2017
实验要求: Objective: To know how to implement image enhancement for color images by histogram processing ...
- 数字图像处理实验(15):PROJECT 06-02,Pseudo-Color Image Processing 标签: 图像处理MATLAB 2017-05-27 20:53
实验要求: 上面的实验要求中Objective(实验目的)部分是错误的. 然而在我拿到的大纲中就是这么写的,所以请忽视那部分,其余部分是没有问题的. 本实验是使用伪彩色强调突出我们感兴趣的灰度范围,在 ...
- 数字图像处理实验(14):PROJECT 06-01,Web-Safe Colors 标签: 图像处理MATLAB 2017-05-27 20:45 116人阅读
实验要求: Objective: To know what are Web-safe colors, how to generate the RGB components for a given jp ...
- 数字图像处理实验(12):PROJECT 05-03,Periodic Noise Reduction Using a Notch Filter 标签: 图像处理MATLAB 2017-0
实验要求: Objective: To understand the principle of the notch filter and its periodic noise reducing abi ...
- 数字图像处理实验(11):PROJECT 05-02,Noise Reduction Using a Median Filter 标签: 图像处理MATLAB 2017-05-26 23:
实验要求: Objective: To understand the non-linearity of median filtering and its noise suppressing abili ...
随机推荐
- LeetCode OJ:Contains Duplicate III(是否包含重复)
Given an array of integers, find out whether there are two distinct indices i and j in the array suc ...
- HDU - 5126 stars (CDQ分治)
题目链接 题目大意:一共有Q(1<=Q<=50000)组操作,操作分为两种: 1.在x,y,z处添加一颗星星 2.询问以(x1,y1,z1)与(x2,y2,z2)为左上和右下顶点的矩形之间 ...
- 团队开发中Git冲突解决
正常来说我们团队协作开发过程中,冲突是常有的事,下面介绍下本人在开发中的解决办法. 冲突的主要原因就是由于我们开发人员在分支的同一位置写入了不一样的代码,然后合并到主干上导致我们冲突. 方法: 当冲突 ...
- numpy、scipy、pandas
以下分别是numpy.Scipy.pandas的简介.虽然这些包提供的一些结构比python自身的“更高级.更高效”,更高级是因为它们能完成更高级的任务,但是,学习的时候尽量不要和python割裂开认 ...
- xftp连接不上阿里云服务器
打开xftp默认是使用FTP协议,要连接到云服务器,需要将协议改为SFTP 连接成功
- 第三篇 ubuntu下,mysql 的root用户密码忘了怎么办?
好长一段时间没有使用ubuntu了,今天进来玩玩,结果连mysql的root用户密码都忘记了.就上网找了一下,发现如下解决办法,试了一下,可行!记录在此,环境问题,是需要注意的. Ubuntu Ser ...
- 聊聊基于Lucene的搜索引擎核心技术实践
最近公司用到了ES搜索引擎,由于ES是基于Lucene的企业搜索引擎,无意间在“聊聊架构”微信公众号里发现了这篇文章,分享给大家. 请点击链接:聊聊基于Lucene的搜索引擎核心技术实践
- boost的asio接收单路大数据量udp包的方法
开发windows客户端接收RTP视频流,当h264视频达到1080P 60fps的时候,按包来调用recvfrom的函数压力比较大,存在丢包的问题,windows的完成端口的性能效果当然可以解决这个 ...
- Mongodb 分片与副本集
测试搭建192.168.3.110mongos 30000,30001,30002config 40000,40001,40002shard1 50001,50002,50003shard2 5000 ...
- Excel开发学习笔记:发布VSTO下的Excel开发项目
遇到一个数据处理自动化的问题,于是打算开发一个基于excel的小工具.在业余时间一边自学一边实践,抽空把一些知识写下来以备今后参考,因为走的是盲人摸象的野路子,幼稚与错误请多包涵. 开发环境基于VST ...