baishui 发表于 2008-4-26 18:49

请教利用样条插值进行图像放大的几个问题

用三次样条插值实现图像放大,给出插值函数y=interp1(x,y,xi,'spline'),只能对坐标插值,不能和图像联系,更不知道如何放大.上次在论坛看到一个网友给的一个回复:q=2
I=imread('lena.jpg');
J=double(I);
=size(X);
=meshgrid(1:n,1:m);
=meshgrid(1:1./q:n,1:1./q:m);
A1(:,:,1)=interp2(x,y,(:,:,1),xi,yi,'spline');
A1(:,:,2)=interp2(x,y,(:,:,2),xi,yi,'spline');
A1(:,:,3)=interp2(x,y,J(:,:,3),xi,yi,'spline');可是运行不了.
另外,用matlab怎么样实现多结点样条插值的图像放大?
希望有大家能指点下,小弟不胜感激!!

[ 本帖最后由 eight 于 2008-4-28 18:48 编辑 ]

sogooda 发表于 2008-4-26 22:37

初到本版请参阅置顶帖。
ps:你的帖子很乱,请重新编辑。

eight 发表于 2008-4-28 18:48

原帖由 baishui 于 2008-4-26 18:49 发表 http://www.chinavib.com/forum/images/common/back.gif
用三次样条插值实现图像放大,给出插值函数y=interp1(x,y,xi,'spline'),只能对坐标插值,不能和图像联系,更不知道如何放大.上次在论坛看到一个网友给的一个回复:q=2
I=imread('lena.jpg');
J=double(I);
请先读懂别人的程序,然后在此基础上自行改进,遇到有问题的地方,先自己尝试通过调试程序解决,实在搞不定再发上来,注意要清楚描述你的问题

baishui 发表于 2008-4-29 14:41

问题是A1(:,:,1),A1(:,:,2),A1(:,:,3),这里不是很理解,希望高人能点破迷津.

sogooda 发表于 2008-4-29 14:50

原帖由 baishui 于 2008-4-29 14:41 发表 http://www.chinavib.com/forum/images/common/back.gif
问题是A1(:,:,1),A1(:,:,2),A1(:,:,3),这里不是很理解,希望高人能点破迷津.
唉,这个就是matlab基础问题了,随便找本基础的matlab书应该都有介绍。本版的置顶帖里也有。

ch_j1985 发表于 2008-4-29 15:08

原帖由 baishui 于 2008-4-29 14:41 发表 http://www.chinavib.com/forum/images/common/back.gif
问题是A1(:,:,1),A1(:,:,2),A1(:,:,3),这里不是很理解,希望高人能点破迷津.

这个应该是三维数组吧

sogooda 发表于 2008-4-29 15:27

回复 楼主 的帖子

刚读了一下这段程序,乱七八糟的,改成下面这样,可以用了,你参考着看看吧。
如果不懂的地方还是有很多的话,找本书来看要比到论坛上来问快得多,不要太心急。另外,多看看帮助文档、别人的帖子,多搜索,多动手试试。clear;clc
q=2 ;
I=imread('c1.jpg');
X=double(I);
=size(X);
=meshgrid(1:n,1:m);
=meshgrid(1:1./q:n,1:1./q:m);
A1(:,:,1)=interp2(x,y,X(:,:,1),xi,yi,'spline');
A1(:,:,2)=interp2(x,y,X(:,:,2),xi,yi,'spline');
A1(:,:,3)=interp2(x,y,X(:,:,3),xi,yi,'spline');
imshow(I);title('原图');
figure;
imshow(uint8(A1));title(sprintf('放大%d倍图',q))

[ 本帖最后由 sogooda 于 2008-4-29 15:29 编辑 ]

baishui 发表于 2008-5-1 11:26

回复 7楼 的帖子

感谢sogooda
我在调试你的代码出现了??? Index exceeds matrix dimensions.
这是什么回事呢
我改了几副图片还是一样.

ch_j1985 发表于 2008-5-1 11:58

原帖由 baishui 于 2008-5-1 11:26 发表 http://www.chinavib.com/forum/images/common/back.gif
感谢sogooda
我在调试你的代码出现了??? Index exceeds matrix dimensions.
这是什么回事呢
我改了几副图片还是一样.

我试了一下楼上的代码,没有出错,只是有一个警告:Warning: Image is too big to fit on screen; displaying at 50%
你再检查一下你的代码,顺便问一下,你的Matlab是什么版本的?

baishui 发表于 2008-5-1 12:32

回复 9楼 的帖子

我用的是Matlab7.0.4

ch_j1985 发表于 2008-5-1 12:44

原帖由 baishui 于 2008-5-1 12:32 发表 http://www.chinavib.com/forum/images/common/back.gif
我用的是Matlab7.0.4
除了改这个地方'c1.jpg',别的代码你改了没?

baishui 发表于 2008-5-2 11:16

回复 11楼 的帖子

我什么都没有改
除了换图片的名称而已

ch_j1985 发表于 2008-5-2 12:16

原帖由 baishui 于 2008-5-2 11:16 发表 http://www.chinavib.com/forum/images/common/back.gif
我什么都没有改
除了换图片的名称而已

要不你换个Matlab版本试试,也不知道sogooda主任用的是什么版本

sogooda 发表于 2008-5-2 18:26

我用的是7.04(R14),按楼主所说我也不清楚是哪里出现了问题。楼主贴一个出了问题的图来,或许可以提供一些线索。

baishui 发表于 2008-5-2 20:04

回复 14楼 的帖子

LENA256.BMP(256*256)
页: [1] 2
查看完整版本: 请教利用样条插值进行图像放大的几个问题