Image processing 用什么代替在logo(视觉样本)中冲浪?
我的任务是在照片中找到徽标图像。我需要找到标志,并计算它的透视失真(标志在塑料卡上) 教科书中的经典方法是使用SURF。不幸的是,SURF在这里有几个缺点: 1) 徽标图像的功能相对较少,很难在大范围内找到它(实际上效果似乎很低) 2) 标志图像有非常重要的色彩,冲浪不使用 我的问题是: 1) 在大画面中寻找小失真图像的任务的正确名称是什么 2) 除了冲浪功能匹配之外,还有其他方法可以完成此任务吗 例如,我可以想象许多扭曲的徽标图像样本,以不同的分辨率数字化。我想,如果我能以低分辨率开始发现,我可以尽早过滤掉不好的假设。逐渐提高分辨率,我可以同时匹配图像并确定其投影参数 有些方法类似于这种方法吗?您尝试过这种方法吗?这对我来说总是很有效 ---标准答案结束后,只有在您有时间并且喜欢玩图像处理的情况下才能继续--- 在搜索面积相对较小的模板时,我还开发了一种方法,使用模板的稳定极值区域(SER)来映射另一个更强大/资源密集型算法的扫描区域。这种方法非常容易实现,在我的上一个项目中创造了奇迹。如果您感兴趣,实现如下(MatLab代码,但没有奇特的函数或矢量化): 尝试使用以下程序识别徽标的唯一稳定间隔(MinT MaxT):Image processing 用什么代替在logo(视觉样本)中冲浪?,image-processing,computer-vision,artificial-intelligence,Image Processing,Computer Vision,Artificial Intelligence,我的任务是在照片中找到徽标图像。我需要找到标志,并计算它的透视失真(标志在塑料卡上) 教科书中的经典方法是使用SURF。不幸的是,SURF在这里有几个缺点: 1) 徽标图像的功能相对较少,很难在大范围内找到它(实际上效果似乎很低) 2) 标志图像有非常重要的色彩,冲浪不使用 我的问题是: 1) 在大画面中寻找小失真图像的任务的正确名称是什么 2) 除了冲浪功能匹配之外,还有其他方法可以完成此任务吗 例如,我可以想象许多扭曲的徽标图像样本,以不同的分辨率数字化。我想,如果我能以低分辨率开始发现,我
TestImage=imread('Leaves.jpg');
TestImage=rgb2gray(TestImage); %Transform RGB to grayscale
NewSER=zeros(size(TestImage)); %initialise stuff
OldSER=zeros(size(TestImage));
SpinSER=zeros(size(TestImage));
Hot=zeros(size(TestImage)); %your stability map
MaxT=255; %your interval, unlike MSER you don't use the whole bit-depth
MinT=1; %try something like 40-150 if you have high contrast in your logo
for k=MaxT:-1:MinT
TestImage1=im2bw(TestImage,k/256);
imshow(abs(Hot/Interval))
colormap(hot)
hold on
text(20,30,['Treshold: ',num2str(k)],'Color','k','FontWeight','bold','FontSize',16,'BackgroundColor','r')
hold off
OldSER=NewSER;
NewSER=TestImage1;
for i=1:size(TestImage,1);
for j=1:size(TestImage,2)
if OldSER(i,j)==NewSER(i,j) && SpinSER(i,j)==0 % Do the extremal regions remain the same/ are they stable over both thresholds?
Hot(i,j)=Hot(i,j)+1;
else
Hot(i,j)=Hot(i,j)-1;
SpinSER(i,j)=1;
end
end
end
shg
pause(0.1)
end
一旦确定了适用于您所在区域的时间间隔,生成一张地图来区分图像的其余部分,并在地图上搜索感兴趣的区域
MaxT=120;
MinT=40;
Map=zeros(x,y); %Create a map for the SER-filtering
% TestImageMinT=im2bw(Image,MinT/256); %Set the range of the extremal region stability.
% TestImageMaxT=im2bw(Image,MaxT/256);
%
% for i=1:x
% for j=1:y
%
% Map(i,j)=TestImageMaxT(i,j)==TestImageMinT(i,j) ; %Map the pixels that remain stable over the interval
%
% end
% end
Map=abs(Image-(MaxT-MinT)/(2*MaxT))*2*MaxT/(MaxT-MinT); %More or less equivalent to the loop comented above but >10x faster...
Map=Map>0.5; %...
并在该区域或(该区域)使用任何探测器
希望对你有帮助,玩得开心 对不起,我不明白。如何比较MSER特征向量?它不是真正的特征向量。事情比这简单得多。当您将灰度图像转换为BW时,如果从阈值0开始,一直到1(或0到255),您将从一个完全黑色的图像开始,并且随着越来越多的对象变为白色,您将得到一个完全白色的图像。然后,我要做的是,只扫描在阈值间隔内保持相同值的像素。如果您的徽标接近白色,则只能扫描在阈值10到255之间保持相同值的像素。如果还有黑色部分,你可以添加保持稳定的像素,比如说,从0到200。如果你正在寻找一个灰色,你可以采取所有的像素不保持稳定时,通过128阈值。。。等等等等。一旦你映射了你想要扫描的区域,你可以用另一种算法来扫描。在我的例子中,这是一个角检测器,否则它会扫描图像周围的数百个角。如果你上传你的标志,我会看一看。
Corners = CornerSusanMapped(ImageBW,Map,17);