;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Olho biônico: estamos caminhando para ter uma supervisão além do alcance

Marcel Lisboa/UOL
Imagem: Marcel Lisboa/UOL

João Paulo Vicente

Colaboração para Tilt

10/07/2020 04h00Atualizada em 10/07/2020 13h52

Um estudo publicado na revista científica Nature em maio reviveu uma discussão que há décadas intriga engenheiros, neurocientistas e oftalmologistas: o desafio de construir um dispositivo biônico que faça jus ao olho humano. Se por um lado há a esperança de restaurar a visão de pessoas com problemas oculares, por outro há a promessa de criar uma espécie de ciborgue, capaz de enxergar de forma sobre-humana.

A depender das pesquisadoras da Universidade de Ciência e Tecnologia de Hong Kong, já existe um modelo de retina artificial que atinge esses objetivos. Mas, antes de se animar com a ideia de ganhar visão noturna e um zoom natural, calma que essa história ainda vai longe: por enquanto, há apenas um protótipo.

No entanto, Zhiyong Fan, o principal responsável pela pesquisa, afirmou ao site Science News que no futuro "ele poderia ser usado para alcançar melhores próteses visuais ou em robôs humanoides".

Feito de uma soma de óxido de alumínio e perovskita —uma substância normalmente usada em painéis de energia solar— o aparelho desenvolvido em Hong Kong emula o formato hemisférico de uma retina.

Em geral, os sensores eletrônicos de luz são materiais rígidos e planos. Mas isso é um problema se a intenção é simular a geometria esférica do olho, que gera um campo de visão amplo e a capacidade de estabelecer um foco preciso em determinado objeto.

Para atingir esse objetivo, uma fina folha de alumínio foi moldada no formato hemisférico. Escrito assim, pode parecer tão simples quanto fazer uma trouxinha para a comida assar melhor no forno, mas o processo é complicado e envolve um processo eletroquímico que transformou o alumínio em óxido de alumínio.

A partir daí, a história fica microscópica. Nanoscópica, na verdade. Dentro dessa retina artificial, estão 460 milhões de sensores de luz feitos de perovskita por centímetro quadrado.

A retina humana, por sua vez, tem dez milhões de células fotorreceptoras por centímetro quadrado. Para os criadores do protótipo, isso significa que alguém que o usasse seria capaz de ver no escuro, por exemplo. Ou enxergar mais longe e com mais definição. No futuro, é claro. E com um grande "se". Afinal, falta descobrir como ligá-lo ao cérebro.

"Eu achei essa pesquisa inacreditável, fantástica, do ponto de vista da engenharia e física dos materiais", diz Jerome Baron, professor de Fisiologia e Biofísica do Instituto de Ciências Biológicas da UFMG, que trabalha com neurofisiologia da percepção visual. "Mas, olhando em perspectiva, talvez isso não vá resolver todos os problemas tipicamente enfrentados quando falamos de um olho biônico e próteses visuais".

Jerome explica que as células fotorreceptoras, emuladas pela pesquisa publicada na Nature, são apenas a primeira de uma série de camadas de células na retina. Esse sistema faz mais do que transformar luz em impulsos elétricos. "Existe aí um circuito muito inteligente que no final manda um padrão de atividade para o resto do cérebro", afirma o professor.

Isso quer dizer que mesmo diante da possibilidade de conectar um olho biônico de alta capacidade visual com o cérebro, não significaria ainda que uma pessoa seria capaz de enxergar melhor.

"O que é importante é que nossa visão começa na retina, mas a experiência visual é feita no restante do cérebro", explica Jerome. "O padrão de atividade mandado para o cérebro tem que ser um padrão que o cérebro entenda".

O chato disso é que um olho biônico pode não ajudar pessoas que nasceram cegas. Ainda que fosse desenvolvido uma prótese ocular eficiente, o cérebro de um cego de nascença não aprendeu a ver.

"Para a robótica, talvez possa servir imediatamente", fala o professor da UFMG. "Agora para próteses visuais em seres humanos, esse ainda é um primeiro o distante".

De graça até injeção no olho?

Hoje, uma das próteses oculares biônicas mais eficientes é a Argus II, que funciona com ajuda de um par de óculos equipado com câmera e computador. A imagem é captada e processada em sinais elétricos. Em seguida, eles são enviados para um implante na retina. O sistema permite aos receptores das próteses recuperar um pouco da visão, em coisas como diferenciar luz e sombra ou ver formas borradas.

Mas olhos biônicos não são o único caminho para melhorar —ou recuperar— a visão.

No ano ado, um grupo de pesquisadores publicou um experimento em que injetaram nos olhos de pequenos ratinhos nanopartículas capazes de transformar ondas de luz infravermelhas em frequências capazes de serem vistas. Em outras palavras, eles fizeram os ratos verem no escuro.

"Como o sistema de retina para humanos e ratos é bem semelhante, em princípio essa nanopartícula pode, em algum momento, ser utilizada em humanos", afirma o professor Gang Han, da Universidade de Massachusetts Medical School, um dos responsáveis pelo projeto. Han conta que o método de injeção usado é um procedimento de rotina em clínicas de tratamento para problemas de retina.

"Agora, nós estamos planejando fazer testes com primatas. Se tudo der certo, há potencial para isso ser traduzido para uso em humanos em uma década", diz o professor.

Bom, enxergar no escuro parece uma vantagem e tanto. Mas se é preciso levar uma injeção no olho para isso, ainda é melhor ligar a luz.