声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5272|回复: 15

[综合讨论] 请教利用样条插值进行图像放大的几个问题

[复制链接]
发表于 2008-4-26 18:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
用三次样条插值实现图像放大,给出插值函数y=interp1(x,y,xi,'spline'),只能对坐标插值,不能和图像联系,更不知道如何放大.上次在论坛看到一个网友给的一个回复:q=2
I=imread('lena.jpg');
J=double(I);
[m,n,k]=size(X);
[x,y]=meshgrid(1:n,1:m);
[xi,yi]=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 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-4-26 22:37 | 显示全部楼层
初到本版请参阅置顶帖。
ps:你的帖子很乱,请重新编辑。
发表于 2008-4-28 18:48 | 显示全部楼层
原帖由 baishui 于 2008-4-26 18:49 发表
用三次样条插值实现图像放大,给出插值函数y=interp1(x,y,xi,'spline'),只能对坐标插值,不能和图像联系,更不知道如何放大.上次在论坛看到一个网友给的一个回复:q=2
I=imread('lena.jpg');
J=double(I);
[m, ...
请先读懂别人的程序,然后在此基础上自行改进,遇到有问题的地方,先自己尝试通过调试程序解决,实在搞不定再发上来,注意要清楚描述你的问题

评分

1

查看全部评分

 楼主| 发表于 2008-4-29 14:41 | 显示全部楼层
问题是A1(:,:,1),A1(:,:,2),A1(:,:,3),这里不是很理解,希望高人能点破迷津.
发表于 2008-4-29 14:50 | 显示全部楼层
原帖由 baishui 于 2008-4-29 14:41 发表
问题是A1(:,:,1),A1(:,:,2),A1(:,:,3),这里不是很理解,希望高人能点破迷津.

唉,这个就是matlab基础问题了,随便找本基础的matlab书应该都有介绍。本版的置顶帖里也有。
发表于 2008-4-29 15:08 | 显示全部楼层
原帖由 baishui 于 2008-4-29 14:41 发表
问题是A1(:,:,1),A1(:,:,2),A1(:,:,3),这里不是很理解,希望高人能点破迷津.


这个应该是三维数组吧

评分

1

查看全部评分

发表于 2008-4-29 15:27 | 显示全部楼层

回复 楼主 的帖子

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

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

评分

1

查看全部评分

 楼主| 发表于 2008-5-1 11:26 | 显示全部楼层

回复 7楼 的帖子

感谢sogooda
我在调试你的代码出现了??? Index exceeds matrix dimensions.
这是什么回事呢
我改了几副图片还是一样.
发表于 2008-5-1 11:58 | 显示全部楼层
原帖由 baishui 于 2008-5-1 11:26 发表
感谢sogooda
我在调试你的代码出现了??? Index exceeds matrix dimensions.
这是什么回事呢
我改了几副图片还是一样.


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

评分

1

查看全部评分

 楼主| 发表于 2008-5-1 12:32 | 显示全部楼层

回复 9楼 的帖子

我用的是Matlab7.0.4
发表于 2008-5-1 12:44 | 显示全部楼层
原帖由 baishui 于 2008-5-1 12:32 发表
我用的是Matlab7.0.4

除了改这个地方'c1.jpg',别的代码你改了没?
 楼主| 发表于 2008-5-2 11:16 | 显示全部楼层

回复 11楼 的帖子

我什么都没有改
除了换图片的名称而已
发表于 2008-5-2 12:16 | 显示全部楼层
原帖由 baishui 于 2008-5-2 11:16 发表
我什么都没有改
除了换图片的名称而已


要不你换个Matlab版本试试,也不知道sogooda主任用的是什么版本
发表于 2008-5-2 18:26 | 显示全部楼层
我用的是7.04(R14),按楼主所说我也不清楚是哪里出现了问题。楼主贴一个出了问题的图来,或许可以提供一些线索。
 楼主| 发表于 2008-5-2 20:04 | 显示全部楼层

回复 14楼 的帖子

LENA256.BMP(256*256)
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-11 15:52 , Processed in 0.087642 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表