2015-09-07 43 views
-1

如何在图像的旋转部分用原始图像的背景填充黑色?请注意,只有非常小的位移才能剪切图像。原始图像和变形图像的大小相同。如何用原始图像的背景填充图像的旋转部分中的黑色?

这是我试过的。任何人都可以提出更好的方法?的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');   

enter image description here

+0

你试过了什么? – FeedTheWeb

+0

@lxer:我正在尝试[像这样](http://stackoverflow.com/questions/7742601/to-replace-black-portion-of-an-image-with-any-other-image-in-matlab ) – erbal

回答

0

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

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

+0

谢谢。请使用示例代码检查我的更新问题。 – erbal

+1

有一个缺点。如果图像中的某个像素的值为零,该怎么办?然后,您将在原始图像内的位置替换值。 –

+0

是的,你正在写。但主要是在我的项目中,即时通讯使用几乎没有黑色部分的彩色图像。 – erbal