【问题标题】:How to rotate block in matlab?如何在matlab中旋转块?
【发布时间】:2014-03-12 13:35:37
【问题描述】:

没有使用图像处理工具箱来划分图像,我使用了元胞数组。如果我想旋转每个块,我应该开发 imrotate,但是如何?与细胞合作并不容易。这是我的除法代码:

A= double(imread('cameraman.tif'));

blockSize = [5 5]

  m = 1;
blocks = floor(size(A)./blockSize);
div_im = cell(blocks);

for j = 1:blocks(2)
    for i = 1:blocks(1)

        % The indices to the current block
        blockIndsX = (1:blockSize(1)) + (i-1)*blockSize(1);
        blockIndsY = (1:blockSize(2)) + (j-1)*blockSize(2);

        div_im{m} = A(blockIndsX, blockIndsY, :);

        m = m + 1;
    end
end

【问题讨论】:

  • 所以你实际上是在问如何找到山脊和 x 轴之间的角度?您可能应该编辑您的问题标题。另请提供示例图片。
  • 不,我已经测量了每个街区的局部角度。但不知道如何旋转它与 x 轴的最终角度为 90
  • 那么让我们看看一些代码供您尝试

标签: matlab rotation block cell fingerprint


【解决方案1】:

首先,在询问要问什么之前,您应该先弄清楚..就您的图像旋转而言,此代码可能会对您有所帮助..如果我在理解您的问题时有误,请引起我的注意..

这里的图片被分成50*50的块..

im = double(imread('cameraman.tif'));
[m,n] = size(im);
% deg = block angle+90; to rotate anticlockwise
% deg = block angle*90; to rotate clockwise
% rotating clockwise will title your x axis to 90 deg..
% divide it in a block of 50*50
for i = 1:50:m-50
    for j = 1:50:n-50
        blk_im = im(i:i+49,j:j+49);
        rot_im(i:i+49,j:j+49) = imrotate(blk_im,deg,'bilinear','crop');

    end;
end;
imshow(rot_im,[]);

这里的块角度应该是度数..如果它是弧度而不是使用radtodeg函数将其转换为度数..

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 2023-03-11
    • 2015-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多