Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 用什么代替在logo(视觉样本)中冲浪?_Image Processing_Computer Vision_Artificial Intelligence - Fatal编程技术网

Image processing 用什么代替在logo(视觉样本)中冲浪?

Image processing 用什么代替在logo(视觉样本)中冲浪?,image-processing,computer-vision,artificial-intelligence,Image Processing,Computer Vision,Artificial Intelligence,我的任务是在照片中找到徽标图像。我需要找到标志,并计算它的透视失真(标志在塑料卡上) 教科书中的经典方法是使用SURF。不幸的是,SURF在这里有几个缺点: 1) 徽标图像的功能相对较少,很难在大范围内找到它(实际上效果似乎很低) 2) 标志图像有非常重要的色彩,冲浪不使用 我的问题是: 1) 在大画面中寻找小失真图像的任务的正确名称是什么 2) 除了冲浪功能匹配之外,还有其他方法可以完成此任务吗 例如,我可以想象许多扭曲的徽标图像样本,以不同的分辨率数字化。我想,如果我能以低分辨率开始发现,我

我的任务是在照片中找到徽标图像。我需要找到标志,并计算它的透视失真(标志在塑料卡上)

教科书中的经典方法是使用SURF。不幸的是,SURF在这里有几个缺点:

1) 徽标图像的功能相对较少,很难在大范围内找到它(实际上效果似乎很低)

2) 标志图像有非常重要的色彩,冲浪不使用

我的问题是:

1) 在大画面中寻找小失真图像的任务的正确名称是什么

2) 除了冲浪功能匹配之外,还有其他方法可以完成此任务吗

例如,我可以想象许多扭曲的徽标图像样本,以不同的分辨率数字化。我想,如果我能以低分辨率开始发现,我可以尽早过滤掉不好的假设。逐渐提高分辨率,我可以同时匹配图像并确定其投影参数

有些方法类似于这种方法吗?

您尝试过这种方法吗?这对我来说总是很有效

---标准答案结束后,只有在您有时间并且喜欢玩图像处理的情况下才能继续---

在搜索面积相对较小的模板时,我还开发了一种方法,使用模板的稳定极值区域(SER)来映射另一个更强大/资源密集型算法的扫描区域。这种方法非常容易实现,在我的上一个项目中创造了奇迹。如果您感兴趣,实现如下(MatLab代码,但没有奇特的函数或矢量化):

尝试使用以下程序识别徽标的唯一稳定间隔(MinT MaxT):

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);