Plugin de pré-processamento de tomografia de projeção óptica para napari
Este plugin napari foi gerado com Cookiecutter usando o modelo cookiecutter-napari-plugin de @napari.

Ir para:
Uso
Armazenamento
ROI
-Registro
Campo escuro e campo claro
Correção de pixel ruim
Correção de intensidade
Branqueamento por fluorescência
Ponto de partida
Configurações globais
Transmissão vs Emissão
Correções
Outro
Instalação
Solução de problemas de instalação
Contribuindo
Licença
Problemas
Agradecimentos
Entrada de dados transmitida do widget ImSwitch OPT (para detalhes, consulte a documentação do ImSwitch)
Projeções tomográficas carregadas como pilha de dados
Outros formatos de dados de volume 3D empilhados
Pequenos dados de exemplo carregados via File -> Open Sample
Duas configurações globais importantes estão disponíveis: Operações locais e Rastreamento .
Para economizar memória, o modo padrão executa operações na pilha de imagens Inplace , reescrevendo a pilha de imagens original. Caso esta opção não esteja selecionada, uma nova camada com a versão modificada da imagem será criada e adicionada ao visualizador. Quando operações Inplace são selecionadas, a opção Rastreamento fica disponível no widget. Esta opção permite rastrear a última operação realizada na pilha/imagem. Ao pressionar o botão Undo , a última operação realizada na imagem é revertida. Apenas é possível desfazer uma única vez .
Atualmente, as imagens são mantidas ou convertidas em numpy.int16 após as operações, exceto para o cálculo -log . Recomendamos fortemente realizar a operação na ordem de cima para baixo e da esquerda para a direita, conforme aparecem no widget, caso contrário, há uma grande chance de ocorrer exceções ou comportamento imprevisível. Registre um problema se alguma lógica do widget precisar ser corrigida para seus pipelines.

Os experimentos de transmissão são considerados quantitativos na aproximação da lei de Beer-Lambert, isso significa que usando a medição de claro e escuro pode-se calcular a absorbância , ou melhor, a transmitância como

, onde I é o sinal medido, é a intensidade do campo claro e são as contagens escuras.
A emissão normalmente está longe de ser quantitativa, devido à concentração desconhecida de coloração, efeitos de extinção, branqueamento, calibração do caminho de detecção, rendimentos quânticos, para citar alguns.
As correções de campo escuro, campo claro e pixel ruim estão diretamente relacionadas à aquisição da câmera. A correção de intensidade, por outro lado, trata da instabilidade da fonte de luz. A imagem corrigida é mostrada no visualizador utilizando os limites de contraste da imagem original. Pode ser necessário ajustar os limites de contraste para ver efetivamente o resultado da correção realizada.
Combinações de correções de campo escuro e campo claro são possíveis para experimentos de transmissão e emissão. O usuário deve selecionar a modalidade do experimento e então decidir se deseja incluir apenas uma correção (campo escuro ou campo claro) ou ambas. Assim que a correção for concluída, dependendo da configuração Inplace , uma nova camada com a imagem corrigida aparecerá no visualizador ou a camada da imagem original será atualizada. A correção de campo escuro sozinha realiza a subtração da imagem escura (operação int ) de cada imagem na pilha de imagens, sempre vale a pena aplicá-la. Esta operação é a mesma independente da modalidade experimental de Transmissão ou Emissão .
A correção de campo claro é particularmente útil para experimentos de transmissão, para corrigir a intensidade variável do fundo brilhante das imagens. A camada brilhante também pode ser usada para identificar pixels mortos. Se aplicadas sozinhas, as imagens são divididas por intensidade de brilho (divisão float ) e depois convertidas para numpy.int16 para o caso do experimento de transmissão . Para dados de emissão , a intensidade do campo brilhante é subtraída de cada imagem na pilha (operação int ).
A correção de campo escuro + claro realizada em conjunto é calculada para transmissão
(image - dark) / (bright - dark)
, que é uma operação float , convertida posteriormente em numpy.int16 .
Para os dados de emissão , a correção combinada de escuro e claro aplicada ao experimento de emissão é simplesmente
(image - dark) - (bright - dark) = image - bright
Consulte a seção acima para obter explicações adicionais sobre a diferença entre transmissão e emissão.
A correção de pixels está disponível para pixels quentes e pixels mortos. Uma vez pressionado o botão Bad pixel correction , os pixels ruins são identificados e o usuário pode optar por corrigi-los ou visualizá-los como uma nova camada no visualizador.

A correção é realizada considerando os valores dos pixels vizinhos. Duas opções estão disponíveis para correção: n4 e n8. A opção n4 usa os 4 pixels vizinhos (cima, baixo, esquerda e direita), enquanto a opção n8 considera todos os 8 pixels vizinhos. Se um pixel vizinho for um pixel ruim, ele não será considerado para correção. O valor do pixel ruim é calculado como mean dos valores dos pixels vizinhos.
Uma vez aplicadas as correções de campo escuro, campo claro e pixels ruins, é possível aplicar uma correção de intensidade para corrigir falta de homogeneidade de luz ao longo da pilha gerada pela instabilidade da fonte de iluminação. O usuário escolhe o tamanho do retângulo e pressiona o botão Intensity correction . A média dos pixels nos quatro cantos da imagem (com lado igual ao tamanho do retângulo) será calculada sobre a pilha e uma imagem corrigida aparecerá no visualizador (se a opção Operações Inplace não estiver selecionada) ou a imagem original será ser atualizado. Além disso, será mostrado um gráfico mostrando as intensidades na pilha (intensidade mean nas 4 áreas retangulares da imagem) antes e depois da correção de intensidade.

Se você deseja corrigir o fotobranqueamento por fluorescência, consulte a próxima seção.

Para cada ângulo, os valores médios de intensidade ao longo das colunas são calculados e depois utilizados como fatores de correção para dividir os valores de intensidade de cada linha em relação à primeira projeção. Uma vez feita a correção, um gráfico mostrando os valores médios calculados para cada ângulo aparece no visualizador. Este recurso pressupõe que a pilha esteja no formato (angles, rows, columns) .
Observe que esta correção não cuida dos efeitos de sombreamento que são aparentes nos sinogramas acima, tirados de uma única linha de câmeras. A luz de excitação de fluorescência vem da direita neste caso, portanto, o lado direito dos sinogams mostra maior intensidade de FL.
O binning da pilha é possível. Escolha o fator de binning e pressione o botão Bin Stack . A pilha armazenada será exibida e uma notificação com as formas originais e novas da pilha aparecerá. A forma é (height // bin_factor, width // bin _factor) , portanto, os pixels da borda podem estar faltando se as dimensões da sua imagem não forem definidas por bin_factor . Os valores de pixel são calculados como uma mean dos pixels agrupados e convertidos em numpy.int16 . O fator de classificação de 1 resulta em nenhuma ação.
Para reconstrução tomográfica, a seleção do ROI pode reduzir bastante o tempo de cálculo do algoritmo de reconstrução. Selecione uma Points layer e adicione um ponto, que define o canto superior esquerdo da ROI. A partir desse ponto, width e height em pixels são selecionadas pelo usuário. Caso seja somado mais de um ponto, apenas o último ponto será considerado para seleção do ROI.
É possível calcular o logaritmo da imagem usando a função -Log do widget tornando mais visíveis os detalhes nas áreas escuras e claras. Esta é uma transformação fisicamente justificada em experimentos de transmissão, porque converte contagens em transmitância . Para medições de emissão , é apenas uma transformação para aumentar o contraste de forma não linear para visualização.

Você pode instalar napari-opt-handler via pip:
pip install napari-opt-handler
Para instalar a versão de desenvolvimento mais recente:
pip install git+https://github.com/QBioImaging/napari-opt-handler.git
Contribuições são muito bem-vindas. Os testes podem ser executados com tox. Certifique-se de que a cobertura permaneça pelo menos a mesma antes de enviar uma solicitação pull.
Distribuído sob os termos da licença BSD-3, "napari-opt-handler" é um software gratuito e de código aberto
Muitas pessoas contribuíram para este projeto. Os principais são:
Giorgia Tortora e Andrea Bassi (Politécnico de Milão)
Teresa Correia (CCMAR-Algarve)
Se você encontrar algum problema, registre um problema junto com uma descrição detalhada.