【问题标题】:How can I fit a squre image into a curved shape-image?如何将方形图像适合弯曲的形状图像?
【发布时间】:2016-07-28 15:22:41
【问题描述】:

我想将二维码放入qr code 弯曲图像中。 我在 MATLAB 中使用极坐标形式来获得弯曲的形状,但我不知道如何将我的 QR 码放入这个非方形图像中。

this is the curved shape that i generate by MATLAB using polar form

谢谢你!

【问题讨论】:

  • 只是为了澄清您的问题,您是否只想在该区域插入一个正方形?还是您真的想扭曲您的 QR 图像以呈现该形状?
  • 你如何生成这个形状?
  • @TasosPapastylianou 我想将二维码插入到那个形状中,而我的新二维码应该是那个形状。之后,我想将新的二维码放在圆锥表面上,以便通过该视角获得方形图像。谢谢。
  • 基本上,我使用了 p=polar(t, length*ones(length(t),1));我计算我的二维码的圆锥形半径和大小,而不是我找到的角度。有了这些信息,我绘制了那个弯曲的形状。

标签: matlab image-processing imaging


【解决方案1】:

这是一个快速的'n'dirty方法

[QR, map] = imread ('qr.png'); % indexed image, so we need to also get the map            

QR = ind2gray (QR, map);       % convert to grayscale

QR = fliplr (QR);              % x-axis moves rightwards, whereas angle t moves 
                               % leftwards, therefore flip left-to-right                            

[r, t] = ndgrid (1 : size (QR, 1), 1 : size (QR, 2)); % rows as radius,
                                                      % columns as angle

t = mat2gray (t);                          % Normalize angle in [0,1] range
t = ((-t) * deg2rad (20)) - deg2rad (80);  % Convert to [80,100] range

r = mat2gray (r);                          % similar approach for radius range
r = (r * 5) + 15;             

X = r .* cos (t);                          % convert polar to cartesian
Y = r .* sin (t);                               

scatter (X(:), Y(:), 1, QR(:))             % plot each cartesian pair as a 
                                           % plot point of size 1, and colour
                                           % taken from the QR matrix
colormap gray;                            
axis off;

结果:

【讨论】:

  • 哦,刚刚注意到您希望曲率走向相反的方向。只需使用Y = r ./ sin (t); 而不是.* :)
  • 好答案...虽然 OP 不值得它 :)
  • 哈哈,为什么?我认为这是一个不错的小问题。我可以看到有人会很难用极坐标图解决这个问题。另外,这只是他的第一个问题:)
  • @TasosPapastylianou。非常感谢。这真的很有帮助。现在,我可以对其进行处理以使其能够被相机读取。
  • @TasosPapastylianou 我用适当的长度和角度打印了形状,但是新的二维码不可读,因为底部弧的长度不正确。如果我们将一个开口的锥形杯视为一个馅饼,并且在这个馅饼上,我们有我们的二维码。底部和顶部的圆弧(QR)不同,也需要根据角度计算。
【解决方案2】:

I tried to sketch the QR code on a pie with parameters

此外,所有参数都已定义

我希望它有助于理解这个问题。

【讨论】:

  • hm,因此,本质上,您希望在直立圆锥体的表面上应用适当转换的 QR 纹理,这样如果您垂直握住手机(例如与 XZ 平面对齐),并且纹理朝向您的手机,您会希望该纹理在手机上的投影形成一个完美的正方形(即原始 QR 形状),以便可以正确读取。对吗?
  • 没错!二维码将在杯子上,它应该面向手机。因此,我应该从相机中看到一个完美的正方形。我写了一个基本代码,如果杯子的大小发生变化,计算所有参数。
  • 我有一个相当简单的(从理论上的角度)解决方案,稍后我有时间可以提供帮助,但是,您确定只需打印一个二维码在杯子上不起作用?我认为读者只是阅读了交替模式,我不确定他们是否特别关心严格的形状......
  • 另外,你真的应该早点提到实际的问题,哈哈。经典XY Problem案例! :p
  • 我想自己解决。抱歉,一开始我无法很好地定义问题。因为我想要一个起点。使用极坐标形式,我能够生成实际曲线,但是,我无法在该曲线上修补/插入 QR 码。我尝试了很多次,但是,读者无法解码代码。然后我意识到底部和顶部长度的弧不组成。这就是读者无法阅读的原因。
猜你喜欢
  • 1970-01-01
  • 2021-06-18
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 2016-07-10
  • 1970-01-01
  • 2019-12-10
相关资源
最近更新 更多