首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用MATLAB中最近邻重采样公式降低空间分辨率

利用MATLAB中最近邻重采样公式降低空间分辨率
EN

Stack Overflow用户
提问于 2014-09-08 16:40:43
回答 1查看 764关注 0票数 0

我试图在matlab中编写一个函数,它将返回一个大小为MS =长度x-分辨率的图像,在原始图像中以像素为单位,NS= y-分辨率长度在原始图像中,使用最近邻公式。

我遇到了一个例外情况,很难找到一个解决方案。我想我需要另一张有条件的支票。目前,对于我的映像,它正在尝试访问d(1309,27),但是它不应该访问该值,因为它是在for循环:for ms = 1:M中有界的MN

代码语言:javascript
复制
     function  r  = imaging( s, M, N, L )
     %imaging Computes the acquisition of the image
         s= imread('Z:\file.tif');
         figure, imshow(s);


         d = im2double(s);

         [MS, NS] = size(d);

         M = 400;
         N = 100;

         dx = M/MS;
         dy = N/NS;

         for ms = 1:M
            mp= floor( (ms +0.5)/dx ) ;
               for ns = 1:N
                  if(d(ms,ns))
                  np= floor( (ns +0.5)/dy ) ;
                  r(ms,ns)= d(mp,np);
               end
         end
    end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-08 17:28:16

我想你最近的邻居调整大小是不合适的。如果要缩放,则应该使用调整大小的函数来简化您的生活。如果不是缩放,则应使用以下代码为索引创建一个查找表。

代码语言:javascript
复制
round( linspace( 1, MS, M ) )

索引表示最终的图像索引。输出表示它应该在原始图像中查找的索引。这是M的情况,N的情况也是这样。您的最终代码如下所示。测试和工作如下。

代码语言:javascript
复制
% Image init
s = imread( 'bag.png' );
figure; imshow( s );
d = im2double( s );

% Get sizes
[MS, NS] = size( d );
M = 400;
N = 100;

% Create image
r = zeros( M, N );

% Create table lookup
lookupM = round( linspace( 1, MS, M ) );
lookupN = round( linspace( 1, NS, N ) );

% Assign New R
for ms = 1:M
    for ns = 1:N
        r(ms,ns) = d( lookupM( ms ), lookupN( ns ) );
    end
end

% Display output
figure; imshow(r);

如果你有任何问题,请告诉我。我还没有发布StackOverflow的回复。

编辑:用行空间函数代替interp1函数

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25729069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档