Computer Science › Especialização
O conceito de abertura desta disciplina, e o seu limite honesto de escopo contra `ai-theory/deep-learning`: uma imagem digital é uma função bidimensional e discreta f(x, y), amostrada numa grade de pixels (resolução espacial) e quantizada num conjunto finito de níveis de intensidade (resolução de intensidade, ou profundidade de bits), e toda técnica nesta disciplina, de um kernel de blur projetado à mão ao pipeline do JPEG, opera diretamente sobre essa matriz de números usando regras fixas e derivadas por humanos, não sobre pesos aprendidos a partir de dados, que é a linha de fato e precisa que esta disciplina traça contra as CNNs que `ai-theory/deep-learning` já ensina como uma técnica de filtro aprendido.
Uma forma genuinamente diferente de olhar para a matriz de pixels de `digital-images-as-discrete-functions`: a Transformada Discreta de Fourier 2D reexpressa a imagem como uma soma ponderada de padrões de base senoidais 2D de frequência espacial variável, cada coeficiente da DFT computado como exatamente o próprio produto interno de `the-dot-product-and-vector-norms` (`foundations/mathematics-for-computing`) entre a imagem e uma função de base senoidal complexa, reusado diretamente em vez de re-derivado, e cobre a intuição real e concreta da qual todo conceito posterior de domínio da frequência nesta disciplina depende: frequências baixas carregam as regiões suaves e lentamente variáveis da imagem, e frequências altas carregam as suas bordas, textura fina e ruído.
Os dois primeiros estágios reais e padrão do pipeline do JPEG, usando um parente próximo da DFT de `the-2d-discrete-fourier-transform-and-the-frequency-domain` escolhido especificamente para compressão, a Transformada Discreta de Cosseno, que concentra a energia de uma imagem natural em poucos coeficientes de baixa frequência mais eficientemente do que a DFT para este propósito: a imagem é dividida em blocos de 8x8 pixels, a DCT 2D de cada bloco é computada, e os coeficientes de frequência resultantes são divididos por uma tabela de quantização e arredondados, o único passo genuinamente com perdas em todo o pipeline, descartando o detalhe de alta frequência ao qual o olho humano é menos sensível, trabalhado aqui num bloco concreto no estilo 8x8 com números reais mostrando exatamente onde a informação é descartada e por que ela é escolhida para ser a informação visualmente menos perceptível.
Fecha o pipeline real do JPEG que `block-based-dct-and-quantization-in-jpeg` começou: os coeficientes DCT quantizados são reordenados por uma varredura em zigue-zague (agrupando frequências semelhantes), codificados por comprimento de sequência, e então codificados por entropia, exatamente o próprio código livre de prefixo ótimo de `huffman-coding-construction` (`ai-theory/information-theory`), reusado diretamente aqui em vez de re-derivado, explorando a mesma estrutura enviesada de frequência de símbolos que `entropy-the-expected-information-content` já provou que um código de Huffman comprime perto do limite teórico de entropia, e fecha com um contraste honesto, breve e em nível de panorama contra abordagens sem perdas, o DEFLATE do PNG (correspondência por dicionário mais codificação de Huffman, sem passo de quantização, então nenhuma informação é jamais descartada), para um leitor ver claramente o que o passo de DCT-e-quantização da compressão com perdas de fato compra em troca dessa perda.
A razão real e histórica pela qual a DFT de `the-2d-discrete-fourier-transform-and-the-frequency-domain` é prática em imagens de fato em vez de uma ferramenta puramente teórica: computar uma DFT de N pontos diretamente pela sua definição custa O(N^2) multiplicações, mas o algoritmo de divisão e conquista de Cooley e Tukey de 1965 recursivamente divide a transformada em DFTs menores sobre amostras de índice par e ímpar, reduzindo o custo para O(N log N), uma diferença que é a razão inteira pela qual a filtragem de imagens no domínio da frequência é computacionalmente viável de todo, trabalhada aqui numa pequena entrada concreta para mostrar exatamente onde a divisão recursiva acontece e por que a economia se acumula.
A operação mecânica central desta disciplina inteira: deslizar um pequeno kernel sobre a grade de pixels da matriz de imagem de `digital-images-as-discrete-functions`, em cada posição tomando a soma dos produtos elemento a elemento entre o kernel e a vizinhança de pixels subjacente, cobre a distinção real entre a convolução verdadeira (de kernel invertido) e a correlação (a maioria das bibliotecas de processamento de imagens de fato implementa correlação e a chama de convolução, uma frouxidão de nomenclatura genuinamente comum que este conceito nomeia honestamente), e as estratégias reais de tratamento de borda que um pixel de borda força (preenchimento com zeros, replicação de borda, reflexão). Esta é exatamente a mesma mecânica de produto escalar deslizante da qual `convolution-as-a-sliding-dot-product` (`ai-theory/deep-learning`) constrói uma camada de CNN, e a linha de escopo honesta para esta disciplina inteira reside bem aqui: todo kernel nesta disciplina é fixo e projetado à mão por um humano antes de a imagem ser sequer vista, enquanto o kernel daquele conceito começa aleatório e é aprendido a partir de dados por gradiente descendente, a mesma operação, duas formas inteiramente diferentes de escolher os seus números.
Os primeiros kernels fixos concretos e reais rodados pela mecânica de janela deslizante de `the-convolution-and-correlation-operation`: o blur de caixa (um kernel de média uniforme e normalizado) e o blur gaussiano (um kernel amostrado da função gaussiana 2D, ponderando pixels próximos mais do que distantes), cobre por que a normalização de kernel (pesos somando 1) é o que impede um blur de escurecer ou clarear a imagem, e a separabilidade real e praticamente importante do kernel gaussiano em duas passadas 1D, que transforma um custo por pixel O(k^2) em O(2k), a razão específica de eficiência pela qual bibliotecas reais implementam o blur gaussiano desta forma em vez de como uma única passada 2D.
A ponte real e demonstrável conectando as duas metades desta disciplina: o teorema da convolução enuncia que convolver duas funções no domínio espacial (exatamente a operação de kernel deslizante de `the-convolution-and-correlation-operation` que os kernels de blur de `spatial-filtering-box-and-gaussian-blur` usam) é matematicamente equivalente a multiplicar as suas transformadas de Fourier ponto a ponto no domínio da frequência que `the-2d-discrete-fourier-transform-and-the-frequency-domain` e `the-fast-fourier-transform` construíram, que é a razão precisa e honesta pela qual um filtro passa-baixa (zerando os coeficientes DFT de alta frequência de uma imagem antes de transformar de volta) produz exatamente o mesmo efeito de embaçamento que a convolução gaussiana no domínio espacial, não uma coincidência ou uma aproximação mas a mesma operação vista por duas lentes diferentes e comprovadamente equivalentes.
A mesma maquinaria de convolução de kernel fixo que `spatial-filtering-box-and-gaussian-blur` usou para suavização, apontada para um objetivo diferente: os dois kernels 3x3 do operador de Sobel, Gx e Gy, aproximam os gradientes de intensidade horizontal e vertical da imagem (cada kernel também incorpora uma pequena quantidade de suavização ao longo do eixo perpendicular, historicamente atribuído à palestra não publicada de 1968 de Irwin Sobel e Gary Feldman no Stanford Artificial Intelligence Laboratory, uma atribuição real e consistentemente citada que este conceito enuncia honestamente em vez de superestimar uma fonte primária limpa), a partir dos quais a magnitude e a direção do gradiente identificam onde a intensidade muda nitidamente, a definição clássica e direta de uma borda sobre a qual toda a linha de trabalho de detecção de bordas desta disciplina é construída.
O algoritmo de Canny de 1986 é a resposta real, historicamente nomeada e de quatro estágios à limitação honesta de `the-sobel-operator-and-gradient-based-edge-detection`, um mapa de magnitude de gradiente bruto sozinho produz blobs de borda grossos e ruidosos, não linhas limpas: suavização gaussiana (reusando o kernel de `spatial-filtering-box-and-gaussian-blur`) para suprimir o ruído primeiro, computação de gradiente (reusando os kernels de Sobel diretamente), supressão de não-máximos para afinar um blob até uma crista de um pixel de largura ao longo da direção verdadeira da borda, e limiarização por histerese com dois limiares (um alto que semeia bordas confirmadas, um baixo que as estende ao longo de pixels conectados de gradiente fraco) para fechar lacunas que um único limiar sub ou superdetectaria, o pipeline real e ainda padrão que tornou a detecção de bordas precisa o bastante para o trabalho de segmentação a jusante.
Constrói diretamente sobre a f(x, y) de canal único de `digital-images-as-discrete-functions` mostrando que uma imagem colorida é três de tais funções empilhadas (canais R, G, B), cada uma uma função discreta independente na mesma grade de pixels, cobre a fórmula ponderada por luminância real e padrão usada para colapsar RGB num único canal de tons de cinza (a mesma ponderação que quase toda biblioteca de imagem real usa, não uma média arbitrária), e prevê, honesta e brevemente, por que um espaço de cor perceptual como HSV separa matiz de intensidade de uma forma que RGB não consegue, um contexto útil para o trabalho posterior de limiarização e segmentação nesta disciplina sem re-derivar a ciência da cor do zero.
A técnica de segmentação clássica mais simples, operando diretamente sobre a imagem de canal único de `grayscale-color-and-color-spaces`: um limiar global divide os pixels em duas classes, primeiro plano e fundo, só por intensidade, e o método de Otsu de 1979 remove a necessidade de adivinhar esse limiar à mão, escolhendo, a partir do próprio histograma de intensidade da imagem, o limiar exato que maximiza a variância entre classes (equivalentemente minimiza a variância dentro das classes) entre as duas populações de pixels resultantes, um algoritmo de limiarização automática real, comprovadamente ótimo para esse critério e ainda amplamente usado que este conceito trabalha à mão num pequeno histograma concreto.
Opera sobre a imagem binária que `thresholding-and-otsus-method` (ou a rotulação de componentes conexos) já produziu, usando um pequeno elemento estruturante em vez de um kernel numérico: a erosão mantém um pixel de primeiro plano só se o elemento estruturante inteiro couber dentro da região de primeiro plano naquela posição, encolhendo regiões e removendo pequenos respingos isolados, enquanto a dilatação define um pixel como primeiro plano se o elemento estruturante sobrepuser o primeiro plano de algum modo, crescendo regiões e preenchendo pequenos buracos, as duas operações binárias reais, duais e fundamentais que toda técnica morfológica mais complexa nesta disciplina compõe.
As duas composições reais e praticamente importantes dos primitivos de `morphological-erosion-and-dilation`: a abertura (erosão seguida de dilatação, com o mesmo elemento estruturante) remove pequenos respingos de ruído e protrusões finas enquanto deixa o tamanho geral de regiões maiores aproximadamente intacto, e o fechamento (dilatação seguida de erosão) preenche pequenos buracos e lacunas enquanto similarmente preserva o tamanho geral da região, trabalhado aqui numa pequena grade binária concreta mostrando exatamente por que rodar a erosão ou a dilatação sozinha, sem o seu inverso pareado, encolheria ou cresceria toda região indiscriminadamente em vez de limpar o ruído seletivamente.
A contraparte baseada em região da divisão puramente baseada em intensidade de `thresholding-and-otsus-method`: o crescimento de regiões começa de um ou mais pixels semente e repetidamente absorve pixels vizinhos cuja intensidade permanece dentro de uma tolerância de similaridade da região em crescimento, e a rotulação de componentes conexos, o passo quase sempre rodado numa imagem binária limiarizada logo depois de `thresholding-and-otsus-method`, é exatamente o próprio preenchimento por inundação em largura de `connected-components-via-bfs` (`algorithms-software/algorithms`) aplicado a uma grade de pixels em vez de um grafo abstrato, reusado diretamente aqui em vez de re-derivado, cada pixel um nó, cada adjacência de 4 ou 8 vizinhos uma aresta, exatamente o BFS de grafo já provado.
O capstone de encerramento desta disciplina, no mesmo padrão amarra-tudo que os próprios capstones de `database-systems` e `distributed-systems-i` já usaram: traça uma fotografia em tons de cinza concreta e ruidosa por um pipeline clássico completo, real e coerente, nomeando o conceito exato responsável por cada estágio, suavização gaussiana (`spatial-filtering-box-and-gaussian-blur`) para suprimir o ruído do sensor antes que qualquer outra coisa rode, o pipeline completo de quatro estágios de `the-canny-edge-detector` para encontrar bordas limpas de objetos, `thresholding-and-otsus-method` mais `region-growing-and-connected-component-labeling` para segmentar as regiões limiarizadas em objetos distintos e rotulados, `morphological-opening-and-closing` para limpar o pequeno ruído de respingos e as lacunas da segmentação, e finalmente a sequência completa de DCT-quantização-codificação-de-entropia de `entropy-coding-and-the-jpeg-pipeline` para produzir um arquivo de saída comprimido, mostrando concretamente que estas não são seis técnicas não relacionadas mas um pipeline real, ordenado e componível, e enuncia honestamente, no encerramento, a única coisa que esta disciplina deliberadamente nunca cobre: aprender os parâmetros de qualquer destes estágios a partir de dados, que é exatamente onde o material de CNN de `ai-theory/deep-learning` retoma.
Part of the Computer Science curriculum.
O conceito de abertura desta disciplina, e o seu limite honesto de escopo contra `ai-theory/deep-learning`: uma imagem digital é uma função bidimensional e discreta f(x, y), amostrada numa grade de pixels (resolução espacial) e quantizada num conjunto finito de níveis de intensidade (resolução de intensidade, ou profundidade de bits), e toda técnica nesta disciplina, de um kernel de blur projetado à mão ao pipeline do JPEG, opera diretamente sobre essa matriz de números usando regras fixas e derivadas por humanos, não sobre pesos aprendidos a partir de dados, que é a linha de fato e precisa que esta disciplina traça contra as CNNs que `ai-theory/deep-learning` já ensina como uma técnica de filtro aprendido.
Uma forma genuinamente diferente de olhar para a matriz de pixels de `digital-images-as-discrete-functions`: a Transformada Discreta de Fourier 2D reexpressa a imagem como uma soma ponderada de padrões de base senoidais 2D de frequência espacial variável, cada coeficiente da DFT computado como exatamente o próprio produto interno de `the-dot-product-and-vector-norms` (`foundations/mathematics-for-computing`) entre a imagem e uma função de base senoidal complexa, reusado diretamente em vez de re-derivado, e cobre a intuição real e concreta da qual todo conceito posterior de domínio da frequência nesta disciplina depende: frequências baixas carregam as regiões suaves e lentamente variáveis da imagem, e frequências altas carregam as suas bordas, textura fina e ruído.
Os dois primeiros estágios reais e padrão do pipeline do JPEG, usando um parente próximo da DFT de `the-2d-discrete-fourier-transform-and-the-frequency-domain` escolhido especificamente para compressão, a Transformada Discreta de Cosseno, que concentra a energia de uma imagem natural em poucos coeficientes de baixa frequência mais eficientemente do que a DFT para este propósito: a imagem é dividida em blocos de 8x8 pixels, a DCT 2D de cada bloco é computada, e os coeficientes de frequência resultantes são divididos por uma tabela de quantização e arredondados, o único passo genuinamente com perdas em todo o pipeline, descartando o detalhe de alta frequência ao qual o olho humano é menos sensível, trabalhado aqui num bloco concreto no estilo 8x8 com números reais mostrando exatamente onde a informação é descartada e por que ela é escolhida para ser a informação visualmente menos perceptível.
Fecha o pipeline real do JPEG que `block-based-dct-and-quantization-in-jpeg` começou: os coeficientes DCT quantizados são reordenados por uma varredura em zigue-zague (agrupando frequências semelhantes), codificados por comprimento de sequência, e então codificados por entropia, exatamente o próprio código livre de prefixo ótimo de `huffman-coding-construction` (`ai-theory/information-theory`), reusado diretamente aqui em vez de re-derivado, explorando a mesma estrutura enviesada de frequência de símbolos que `entropy-the-expected-information-content` já provou que um código de Huffman comprime perto do limite teórico de entropia, e fecha com um contraste honesto, breve e em nível de panorama contra abordagens sem perdas, o DEFLATE do PNG (correspondência por dicionário mais codificação de Huffman, sem passo de quantização, então nenhuma informação é jamais descartada), para um leitor ver claramente o que o passo de DCT-e-quantização da compressão com perdas de fato compra em troca dessa perda.
A razão real e histórica pela qual a DFT de `the-2d-discrete-fourier-transform-and-the-frequency-domain` é prática em imagens de fato em vez de uma ferramenta puramente teórica: computar uma DFT de N pontos diretamente pela sua definição custa O(N^2) multiplicações, mas o algoritmo de divisão e conquista de Cooley e Tukey de 1965 recursivamente divide a transformada em DFTs menores sobre amostras de índice par e ímpar, reduzindo o custo para O(N log N), uma diferença que é a razão inteira pela qual a filtragem de imagens no domínio da frequência é computacionalmente viável de todo, trabalhada aqui numa pequena entrada concreta para mostrar exatamente onde a divisão recursiva acontece e por que a economia se acumula.
A operação mecânica central desta disciplina inteira: deslizar um pequeno kernel sobre a grade de pixels da matriz de imagem de `digital-images-as-discrete-functions`, em cada posição tomando a soma dos produtos elemento a elemento entre o kernel e a vizinhança de pixels subjacente, cobre a distinção real entre a convolução verdadeira (de kernel invertido) e a correlação (a maioria das bibliotecas de processamento de imagens de fato implementa correlação e a chama de convolução, uma frouxidão de nomenclatura genuinamente comum que este conceito nomeia honestamente), e as estratégias reais de tratamento de borda que um pixel de borda força (preenchimento com zeros, replicação de borda, reflexão). Esta é exatamente a mesma mecânica de produto escalar deslizante da qual `convolution-as-a-sliding-dot-product` (`ai-theory/deep-learning`) constrói uma camada de CNN, e a linha de escopo honesta para esta disciplina inteira reside bem aqui: todo kernel nesta disciplina é fixo e projetado à mão por um humano antes de a imagem ser sequer vista, enquanto o kernel daquele conceito começa aleatório e é aprendido a partir de dados por gradiente descendente, a mesma operação, duas formas inteiramente diferentes de escolher os seus números.
Os primeiros kernels fixos concretos e reais rodados pela mecânica de janela deslizante de `the-convolution-and-correlation-operation`: o blur de caixa (um kernel de média uniforme e normalizado) e o blur gaussiano (um kernel amostrado da função gaussiana 2D, ponderando pixels próximos mais do que distantes), cobre por que a normalização de kernel (pesos somando 1) é o que impede um blur de escurecer ou clarear a imagem, e a separabilidade real e praticamente importante do kernel gaussiano em duas passadas 1D, que transforma um custo por pixel O(k^2) em O(2k), a razão específica de eficiência pela qual bibliotecas reais implementam o blur gaussiano desta forma em vez de como uma única passada 2D.
A ponte real e demonstrável conectando as duas metades desta disciplina: o teorema da convolução enuncia que convolver duas funções no domínio espacial (exatamente a operação de kernel deslizante de `the-convolution-and-correlation-operation` que os kernels de blur de `spatial-filtering-box-and-gaussian-blur` usam) é matematicamente equivalente a multiplicar as suas transformadas de Fourier ponto a ponto no domínio da frequência que `the-2d-discrete-fourier-transform-and-the-frequency-domain` e `the-fast-fourier-transform` construíram, que é a razão precisa e honesta pela qual um filtro passa-baixa (zerando os coeficientes DFT de alta frequência de uma imagem antes de transformar de volta) produz exatamente o mesmo efeito de embaçamento que a convolução gaussiana no domínio espacial, não uma coincidência ou uma aproximação mas a mesma operação vista por duas lentes diferentes e comprovadamente equivalentes.
A mesma maquinaria de convolução de kernel fixo que `spatial-filtering-box-and-gaussian-blur` usou para suavização, apontada para um objetivo diferente: os dois kernels 3x3 do operador de Sobel, Gx e Gy, aproximam os gradientes de intensidade horizontal e vertical da imagem (cada kernel também incorpora uma pequena quantidade de suavização ao longo do eixo perpendicular, historicamente atribuído à palestra não publicada de 1968 de Irwin Sobel e Gary Feldman no Stanford Artificial Intelligence Laboratory, uma atribuição real e consistentemente citada que este conceito enuncia honestamente em vez de superestimar uma fonte primária limpa), a partir dos quais a magnitude e a direção do gradiente identificam onde a intensidade muda nitidamente, a definição clássica e direta de uma borda sobre a qual toda a linha de trabalho de detecção de bordas desta disciplina é construída.
O algoritmo de Canny de 1986 é a resposta real, historicamente nomeada e de quatro estágios à limitação honesta de `the-sobel-operator-and-gradient-based-edge-detection`, um mapa de magnitude de gradiente bruto sozinho produz blobs de borda grossos e ruidosos, não linhas limpas: suavização gaussiana (reusando o kernel de `spatial-filtering-box-and-gaussian-blur`) para suprimir o ruído primeiro, computação de gradiente (reusando os kernels de Sobel diretamente), supressão de não-máximos para afinar um blob até uma crista de um pixel de largura ao longo da direção verdadeira da borda, e limiarização por histerese com dois limiares (um alto que semeia bordas confirmadas, um baixo que as estende ao longo de pixels conectados de gradiente fraco) para fechar lacunas que um único limiar sub ou superdetectaria, o pipeline real e ainda padrão que tornou a detecção de bordas precisa o bastante para o trabalho de segmentação a jusante.
Constrói diretamente sobre a f(x, y) de canal único de `digital-images-as-discrete-functions` mostrando que uma imagem colorida é três de tais funções empilhadas (canais R, G, B), cada uma uma função discreta independente na mesma grade de pixels, cobre a fórmula ponderada por luminância real e padrão usada para colapsar RGB num único canal de tons de cinza (a mesma ponderação que quase toda biblioteca de imagem real usa, não uma média arbitrária), e prevê, honesta e brevemente, por que um espaço de cor perceptual como HSV separa matiz de intensidade de uma forma que RGB não consegue, um contexto útil para o trabalho posterior de limiarização e segmentação nesta disciplina sem re-derivar a ciência da cor do zero.
A técnica de segmentação clássica mais simples, operando diretamente sobre a imagem de canal único de `grayscale-color-and-color-spaces`: um limiar global divide os pixels em duas classes, primeiro plano e fundo, só por intensidade, e o método de Otsu de 1979 remove a necessidade de adivinhar esse limiar à mão, escolhendo, a partir do próprio histograma de intensidade da imagem, o limiar exato que maximiza a variância entre classes (equivalentemente minimiza a variância dentro das classes) entre as duas populações de pixels resultantes, um algoritmo de limiarização automática real, comprovadamente ótimo para esse critério e ainda amplamente usado que este conceito trabalha à mão num pequeno histograma concreto.
Opera sobre a imagem binária que `thresholding-and-otsus-method` (ou a rotulação de componentes conexos) já produziu, usando um pequeno elemento estruturante em vez de um kernel numérico: a erosão mantém um pixel de primeiro plano só se o elemento estruturante inteiro couber dentro da região de primeiro plano naquela posição, encolhendo regiões e removendo pequenos respingos isolados, enquanto a dilatação define um pixel como primeiro plano se o elemento estruturante sobrepuser o primeiro plano de algum modo, crescendo regiões e preenchendo pequenos buracos, as duas operações binárias reais, duais e fundamentais que toda técnica morfológica mais complexa nesta disciplina compõe.
As duas composições reais e praticamente importantes dos primitivos de `morphological-erosion-and-dilation`: a abertura (erosão seguida de dilatação, com o mesmo elemento estruturante) remove pequenos respingos de ruído e protrusões finas enquanto deixa o tamanho geral de regiões maiores aproximadamente intacto, e o fechamento (dilatação seguida de erosão) preenche pequenos buracos e lacunas enquanto similarmente preserva o tamanho geral da região, trabalhado aqui numa pequena grade binária concreta mostrando exatamente por que rodar a erosão ou a dilatação sozinha, sem o seu inverso pareado, encolheria ou cresceria toda região indiscriminadamente em vez de limpar o ruído seletivamente.
A contraparte baseada em região da divisão puramente baseada em intensidade de `thresholding-and-otsus-method`: o crescimento de regiões começa de um ou mais pixels semente e repetidamente absorve pixels vizinhos cuja intensidade permanece dentro de uma tolerância de similaridade da região em crescimento, e a rotulação de componentes conexos, o passo quase sempre rodado numa imagem binária limiarizada logo depois de `thresholding-and-otsus-method`, é exatamente o próprio preenchimento por inundação em largura de `connected-components-via-bfs` (`algorithms-software/algorithms`) aplicado a uma grade de pixels em vez de um grafo abstrato, reusado diretamente aqui em vez de re-derivado, cada pixel um nó, cada adjacência de 4 ou 8 vizinhos uma aresta, exatamente o BFS de grafo já provado.
O capstone de encerramento desta disciplina, no mesmo padrão amarra-tudo que os próprios capstones de `database-systems` e `distributed-systems-i` já usaram: traça uma fotografia em tons de cinza concreta e ruidosa por um pipeline clássico completo, real e coerente, nomeando o conceito exato responsável por cada estágio, suavização gaussiana (`spatial-filtering-box-and-gaussian-blur`) para suprimir o ruído do sensor antes que qualquer outra coisa rode, o pipeline completo de quatro estágios de `the-canny-edge-detector` para encontrar bordas limpas de objetos, `thresholding-and-otsus-method` mais `region-growing-and-connected-component-labeling` para segmentar as regiões limiarizadas em objetos distintos e rotulados, `morphological-opening-and-closing` para limpar o pequeno ruído de respingos e as lacunas da segmentação, e finalmente a sequência completa de DCT-quantização-codificação-de-entropia de `entropy-coding-and-the-jpeg-pipeline` para produzir um arquivo de saída comprimido, mostrando concretamente que estas não são seis técnicas não relacionadas mas um pipeline real, ordenado e componível, e enuncia honestamente, no encerramento, a única coisa que esta disciplina deliberadamente nunca cobre: aprender os parâmetros de qualquer destes estágios a partir de dados, que é exatamente onde o material de CNN de `ai-theory/deep-learning` retoma.