fantasy
2009-03-21, 21:47
最近碰到一个难题,是这样的:
导师要处理一个2D图像, 因为要交互,需要一个小界面,我弄了一个GUI,在GUI中显示图像,有一块不需要处理,因此,需要将这一块涂黑,可以在图中点几个点,以这几个点顺序可以构造一个多边形,将多边形内部的区域涂黑,就是这么简单,但是显然不能利用外部工具
我试了几种方法,分别说下:
1。对图像中此区域内的点进行处理,利用inpolygon()判断点是否在画的多边形中,然后置换颜色,程序如下:
I = imread('1.jpg');
figure,imshow(I);
hold on;
Number = 0;
x = [];
y = [];
disp('Left mouse button picks points.')
disp('Right mouse button picks last points.')
but = 1;
while but == 1
[xi, yi, but] = ginput(1);
plot(xi,yi);
Number = Number + 1;
x(Number) = xi;
y(Number) = yi;
end
x_min = min(x);
x_max = max(x);
y_min = min(y);
y_max = max(y);
for i=x_min:x_max
for j=y_min:y_max
if (inpolygon(i,j,x,y) == 1)
i_int = int32(i);
j_int = int32(j);
I(j_int,i_int,1) = 0;
I(j_int,i_int,2) = 0;
I(j_int,i_int,3) = 0;
end
end
end
imshow(I);
这种方法基本能实现要求,可以将原图修改掉,但是缺点就是速度太慢
2。用Matlabl里的 fill 函数
Matlab提供了一个fill 函数,可以在图中快速进行多边形填充,使用也简单,但是这样画的多边形怎么保存到原来的文件呢? 因为下一步要继续对原文件进行操作。 我试过saveas,但是保存时总是把figure的边界保存下来了,不符合要求。
所以,各位大侠,帮帮小弟吧,为这个小问题纠结了一天了,还有其他重要的事要做呢,谢谢谢谢
:lovely: :lovely: :lovely: :lovely: :lovely: :lovely: :lovely: :lovely:
导师要处理一个2D图像, 因为要交互,需要一个小界面,我弄了一个GUI,在GUI中显示图像,有一块不需要处理,因此,需要将这一块涂黑,可以在图中点几个点,以这几个点顺序可以构造一个多边形,将多边形内部的区域涂黑,就是这么简单,但是显然不能利用外部工具
我试了几种方法,分别说下:
1。对图像中此区域内的点进行处理,利用inpolygon()判断点是否在画的多边形中,然后置换颜色,程序如下:
I = imread('1.jpg');
figure,imshow(I);
hold on;
Number = 0;
x = [];
y = [];
disp('Left mouse button picks points.')
disp('Right mouse button picks last points.')
but = 1;
while but == 1
[xi, yi, but] = ginput(1);
plot(xi,yi);
Number = Number + 1;
x(Number) = xi;
y(Number) = yi;
end
x_min = min(x);
x_max = max(x);
y_min = min(y);
y_max = max(y);
for i=x_min:x_max
for j=y_min:y_max
if (inpolygon(i,j,x,y) == 1)
i_int = int32(i);
j_int = int32(j);
I(j_int,i_int,1) = 0;
I(j_int,i_int,2) = 0;
I(j_int,i_int,3) = 0;
end
end
end
imshow(I);
这种方法基本能实现要求,可以将原图修改掉,但是缺点就是速度太慢
2。用Matlabl里的 fill 函数
Matlab提供了一个fill 函数,可以在图中快速进行多边形填充,使用也简单,但是这样画的多边形怎么保存到原来的文件呢? 因为下一步要继续对原文件进行操作。 我试过saveas,但是保存时总是把figure的边界保存下来了,不符合要求。
所以,各位大侠,帮帮小弟吧,为这个小问题纠结了一天了,还有其他重要的事要做呢,谢谢谢谢
:lovely: :lovely: :lovely: :lovely: :lovely: :lovely: :lovely: :lovely: