五味瓶 发表于 2009-5-18 11:25

matla里面图像经过平移后为什么出来的结果是黑的?

刚刚接触数字图像处理这门课,自己照着书上编写小程序,但是发现出来的结果直接是一张黑图,只是图的形状变化了,请哪位高手帮忙看看,谢谢哦。。。
%图像平移
G=ones(1220,1640);
for i=1:1200
    for j=1600
      G(i+20,j+40)=A(i,j);
    end
end
figure(4)
imshow(G)

这个A就是我读到里面的一张图片,但是出来的结果是一张黑图,就是大小变了

xiuhuwang 发表于 2009-5-18 11:39

回复 楼主 五味瓶 的帖子

平移?
你的算法有问题
你的图是?
平移应该不用i=1:1200吧

五味瓶 发表于 2009-5-18 11:48

回复 沙发 xiuhuwang 的帖子

我是想着本来的图式1200*1600的,我要把它垂直和水平的平移量为20和40,所以直接就那样了,呵呵。。。不太懂这个

xiuhuwang 发表于 2009-5-18 11:54

回复 板凳 五味瓶 的帖子

我也是不懂,但是明显你的思路是错的
你可以检查一下你转移后的矩阵
明显是让“像素”的值发生了变化,而不是位置发生了变化
你可以试着横向平移一下,把列向量都平移几个单位。

friendchj 发表于 2009-5-18 11:55

现编了一个:
I=imread('lena.jpg');
I=rgb2gray(I);
I1=circshift(I,);
subplot(121)
imshow(I)
subplot(122)
imshow(I1)

五味瓶 发表于 2009-5-18 11:57

回复 地板 xiuhuwang 的帖子

好的,我找本书再看看:@)

五味瓶 发表于 2009-5-18 11:58

回复 5楼 friendchj 的帖子

谢谢哦,我再看看我的:@)

xiuhuwang 发表于 2009-5-18 12:10

回复 5楼 friendchj 的帖子

顶~~
我觉得lz对图像处理还没有理解好

xiuhuwang 发表于 2009-5-18 12:10

回复 7楼 五味瓶 的帖子

应该是灰度图
否则矩阵就不好处理了

五味瓶 发表于 2009-5-20 21:06

我要再说说我前面问的那个问题,我的思路没有错,我要实现的就是把像素平移,其实是很简单的一个问题,但是我偶的数据类型搞错了,我的A是Unit8的,但是G是double的,所以错了,还是很谢谢大家的帮忙,我又学到了一些知识:victory:
我想把我的图贴上来,大家看看,但是一直显示我的图太大了,我不知道怎么弄,呵呵
页: [1]
查看完整版本: matla里面图像经过平移后为什么出来的结果是黑的?