[Visão computacional] Lição de casa e conhecimento de rede-3

Escreva na frente

O código ou pseudo-código do artigo é um trecho online e meu código é privado!

hw2

1. Detecção de canto de Harris
Cálculo de ponto de recurso
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Afim: (transformação essencial de coordenadas)
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui
supressão não máxima (NMS)

Ao executar a detecção de destino, geralmente é adotado um método de deslizamento de janela para gerar muitos quadros candidatos na imagem e, em seguida, esses quadros candidatos são submetidos à extração de recursos e depois enviados ao classificador.Geralmente, é obtida uma pontuação, como detecção de rosto , Haverá pontuações em muitas caixas e todas essas pontuações serão classificadas. Selecione a caixa com a pontuação mais alta e calcule o grau de sobreposição (iou) das outras caixas com a caixa atual.Se o grau de coincidência for maior que um determinado limite, exclua-o, porque pode haver várias caixas com pontuações altas na mesma face. É um rosto humano, mas não precisa ser emoldurado. Só precisamos de um.

Percorra o restante das caixas, se a área de sobreposição (IOU) com a subestrutura mais alta atual for maior que um determinado limite, excluiremos a caixa

Código MATLAB encontrado online

%% NMS:non maximum suppression
function pick = nms(boxes,threshold,type)
% boxes: m x 5,表示有m个框,5列分别是[x1 y1 x2 y2 score]
% threshold: IOU阈值
% type:IOU阈值的定义类型

    % 输入为空,则直接返回
    if isempty(boxes)
      pick = [];
      return;
    end

    % 依次取出左上角和右下角坐标以及分类器得分(置信度)
    x1 = boxes(:,1);
    y1 = boxes(:,2);
    x2 = boxes(:,3);
    y2 = boxes(:,4);
    s = boxes(:,5);

    % 计算每一个框的面积
    area = (x2-x1+1) .* (y2-y1+1);

    %将得分升序排列
    [vals, I] = sort(s);

    %初始化
    pick = s*0;
    counter = 1;

    % 循环直至所有框处理完成
    while ~isempty(I)
        last = length(I); %当前剩余框的数量
        i = I(last);%选中最后一个,即得分最高的框
        pick(counter) = i;
        counter = counter + 1;  

        %计算相交面积
        xx1 = max(x1(i), x1(I(1:last-1)));
        yy1 = max(y1(i), y1(I(1:last-1)));
        xx2 = min(x2(i), x2(I(1:last-1)));
        yy2 = min(y2(i), y2(I(1:last-1)));  
        w = max(0.0, xx2-xx1+1);
        h = max(0.0, yy2-yy1+1); 
        inter = w.*h;

        %不同定义下的IOU
        if strcmp(type,'Min')
            %重叠面积与最小框面积的比值
            o = inter ./ min(area(i),area(I(1:last-1)));
        else
            %交集/并集
            o = inter ./ (area(i) + area(I(1:last-1)) - inter);
        end

        %保留所有重叠面积小于阈值的框,留作下次处理
        I = I(find(o<=threshold));
    end
    pick = pick(1:(counter-1));
end

2. Correspondência de patches

Medição de distância:

Σx, y (I (x, y) -J (x, y)) 2
Insira a descrição da imagem aqui
encontre a melhor correspondência

Algoritmo de consenso de amostra aleatória (RANSAC)

Estimar iterativamente os parâmetros do modelo matemático a partir de um conjunto de dados observados contendo valores extremos.

① Considere um modelo com um potencial mínimo de conjunto de amostragem de n (n é o número mínimo de amostras necessário para inicializar os parâmetros do modelo) e um conjunto de amostras P, o número de amostras no conjunto P # §> n, selecione aleatoriamente n amostras de P O subconjunto S de P inicializa o modelo M;
set O conjunto de amostras cujo erro no conjunto residual SC = P \ S é menor que um determinado limite do conjunto t e S constitui S *. S é considerado um conjunto de pontos interior, e eles constituem um conjunto consistente de S (Conjunto de Consenso);
#Se # (S
) ≥N, considera-se que os parâmetros corretos do modelo são obtidos e o método dos mínimos quadrados é usado usando o conjunto S * (inliers) Recalcule o novo modelo M *; extraia aleatoriamente um novo S e repita o processo acima.
④ Após a conclusão de um determinado número de amostragens, se o conjunto consistente não for encontrado, o algoritmo falhará, caso contrário, o maior conjunto consistente obtido após a amostragem será usado para julgar os pontos internos e externos, e o algoritmo será encerrado.

O algoritmo de pseudocódigo é o seguinte: (online)

输入:

Data       一组观测数据
Model     适应于数据的模型
 n        适应于模型的最小数据个数
 k        算法的迭代次数
 t         用于决定数据是否适应于模型的阈值
 d         判定模型是否适用于数据集的数据数目
参考链接:http://blog.csdn.net/pi9nc/article/details/26596519

Best_model  与数据最匹配的模型参数(没有返回null)

Best_consensus_set 估计出模型的数据点

Best_error   跟数据相关的估计出的模型错误

iterations = 0
best_model = null
best_consensus_set = null
best_error = 无穷大
while ( iterations < k )
maybe_inliers = 从数据集中随机选择n个点
maybe_model = 适合于maybe_inliers的模型参数
consensus_set = maybe_inliers

for ( 每个数据集中不属于maybe_inliers的点 )
if ( 如果点适合于maybe_model,且错误小于t )
将点添加到consensus_set
if ( consensus_set中的元素数目大于d )
已经找到了好的模型,现在测试该模型到底有多好
better_model = 适合于consensus_set中所有点的模型参数
this_error = better_model究竟如何适合这些点的度量
if ( this_error < best_error )
我们发现了比以前好的模型,保存该模型直到更好的模型出现
best_model =  better_model
best_consensus_set = consensus_set
best_error =  this_error
增加迭代次数
返回 best_model, best_consensus_set, best_error

Algoritmo SIFT detalhado

https://blog.csdn.net/zddblog/article/details/7521424

Publicado 29 artigos originais · elogiado 0 · visitas 499

Acho que você gosta

Origin blog.csdn.net/qq_43771959/article/details/104309183
Recomendado
Clasificación