【问题标题】:How to fill black color in a rotated portion of an image with background of original image?如何在具有原始图像背景的图像的旋转部分中填充黑色?
【发布时间】:2015-09-07 08:33:54
【问题描述】:

如何用原始图像的背景在图像的旋转部分填充黑色?请注意,图像仅在位移非常小的情况下在侧面被剪切。原始图像和转换图像的大小相同。

这是我尝试过的。任何人都可以提出更好的方法吗? MATLAB代码及对应结果:

A=imread('cameraman.tif');
tform=affine2d([1 0 0 ; 0.05 1 0 ; 0 0 1]);
J=imwarp(A, tform, 'OutputView',imref2d(size(A)));
subplot(1,3,1)
imshow(A),title('Original Image');
subplot(1,3,2)
imshow(J),title('Rotated Image');
zeropixels = J == 0;
J(zeropixels) = A(zeropixels);
subplot(1,3,3)
imshow(J),title('Correct Image');        

【问题讨论】:

标签: matlab image-processing image-rotation


【解决方案1】:

尝试以下方法: 1)旋转具有恒定值的所有像素的图像(以明确的方式找到区域)。 2) 现在可以使用像素值为 0 的像素位置来创建遮罩。 3) 使用创建的蒙版将原始图像中的像素复制到旋转后的图像中。

为了改善结果(边缘一致性),在替换值之前平滑图像可能会有所帮助。

【讨论】:

  • 谢谢。请使用示例代码检查我更新的问题。
  • 有一个缺点。如果图像中的某个像素的值为零怎么办。然后您将替换原始图像内位置的值。
  • 是的,你在写。但主要是在我的项目中,我使用几乎没有黑色部分的彩色图像。
猜你喜欢
  • 2015-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多