Fotografía RAW: Sensores CFA, Demosaicing y Dcraw

Share on Google+Share on FacebookTweet about this on Twitter

 

Los Objetivos de Hoy:

  • Poder realizar capturas RAW con la gran mayoría de terminales móviles
  • Entender como son realmente las capturas RAW
  • Ser capaces de “revelar” dichas capturas RAW sea cuales sea su formato
  • Crear nuestras propias herramientas cuando lo que tenemos fuera no nos soluciona el problema
  • Versión Dcraw Modificada para dar soporte específico al Xiaomi Mi6 (Ver apuntes finales)

Como pequeña introducción, los amantes de la fotografía que usen Android, sabrán que este tiene dos APIs fundamentales a día de hoy: Camera1 y Camera2/HAL3.x. En teoría la segunda viene a sustituir la primera desde hace mucho tiempo ya, pero la vagancia de algunos fabricantes y el uso para variar de APIs propias de otros, hace que como todo se tomen su tiempo. La ventaja de usar Camera2/HAL 3.x es enorme, ya que de forma nativa Android permite la captura RAW, controlar controles ISO, tiempo de exposición, focus… y de ahí existe la extraña creencia que todo ello no puede hacerse en Camera1. Sí se puede, ojo, la diferencia es que es más complicado y no tan eficiente. Y ahí es donde todo esto empieza, por mi cabezonería. El Xiaomi Mi6, por ejemplo, es totalmente compatible con Camera2, pero no está habilitado por defecto. Así que me decidí a lograr capturas RAW sin usar Camera2 (que es trivial). Lo que no tenía ni idea es que iba a dar para tanto.

Siempre he dicho que yo no soy un genio, genio son aquellos que tienen las capacidades y habilidades de crear los códigos tan ingeniosos que crean. Que yo sepa programar y pueda en un momento dado crearme mis herramientas, utilidades y otros es una cosa, pero la capacidad de algunos compañeros para plasmar tanto problemas matemáticos, algoritmos… en código, siempre la he envidiado. Con esto quiero mandar un saludo especial a los creadores de las mismas herramientas que he usado/uso, y algunas que he modificado.

La primera, pienso que es la mejor aplicación de cámara en Android en cuanto a versatilidad y grado técnico. Por desgracia recientemente su creador, troop, eliminó no solo el repositorio de github, sino que terminó borrando casi todo rastro de sí mismo. Llego a estar en el PlayStore, y cada actualización era mejor que la anterior. No se saben bien los motivos, unos dicen que se cansó, otros que realmente la aplicación tenia malware… sea como sea, está oficialmente retirada, pero tenemos forks en github. La última versión que lanzó fue la 4.1 Alpha 5, de este mismo Julio. Por cierto, hablo de FreedCam. Y tengo que decir que fue la que empezó todo esto. Esta app tiene una peculiaridad (bueno tiene muchas) importante, y es que te permite cambiar de Camera1 a Camera2 (si el terminal es compatible), y usar en cada caso lo mejor que tu cámara pueda darte. Y es mucho, porque posiblemente no vas a encontrar otra cámara que en Camera1 sea capaz de hacer una captura RAW. Y sí, la hace… bueno, siempre y cuando claro el terminal exponga en su Driver que admite al menos la captura en algún formato que no sea JPG, y ya os digo que la mayoría puede!! Y sin usar Camera2. Pero todo esto lo veremos más adelante.

La segunda, ha sido la que después de mucho quebrarme el coco, me ha dado todo el código que necesitaba para que con unas … Leer Más...

Cuando te plagian artículos y aun así niegan la mayor

Share on Google+Share on FacebookTweet about this on Twitter

Esta no era precisamente la siguiente entrada que tenía pensado publicar, y por desgracia, a diferencia de tantos otros temas que hemos tocado, es de las pocas veces que creo que voy a usar mi propio blog a modo de reivindicación, indignación y también sorpresa. Así que hoy, lo siento, la poca tecnología de la que se va a hablar es debido a que el artículo en cuestión tocaba dichos temas, pero poco más. Con vuestro permiso, como siempre, dejadme que os cuente la historia de estos días atrás… por supuesto desde mi punto de vista y con los datos e información que he tenido, pero cada cual saque sus propias conclusiones, además de creer lo que crea oportuno. 

Además no está mal recordar algunas cosas que creo forman parte de la moral/ética, que a veces se olvida en Internet.

 

Antecedentes

Soy alguien que defiende las libertades, empezando por la libertad de expresión, por supuesto con educación y con un mínimo de cabeza. El principal motivo por el que hace ya muchos años abrí este pequeño espacio, y no es la primera vez que lo digo, fue para tener la libertad de escribir sobre cualquier cosa que quisiese sin preocuparme que cualquier tipo de politiqueo pudiese censurarme de modo alguno. Por aquel entonces frecuentaba mucho un par de foros, pero al final por no ser políticamente correcto siempre terminaba igual. Aquí encontré un lugar mucho mejor, y pese ser un amante de la tecnología, lo bueno de estar en la propia casa de uno es que no hay más normas que las que uno pone, y si quiero hablar del tiempo, de política, de sociedad o de lo que me de la gana, lo he hecho. Pero siempre he intentado mantener unas normas básicas, incluso en casa propia creo que es necesario, evitan el perdernos a nosotros mismos, evitan convertirnos a veces en aquello que decimos detestar o que incluso criticamos. No hablo de una larga lista, es algo muy básico y que en lo personal creo que es esencial:

Respetar siempre tanto al lector como a cualquiera que quiera dejar su comentario. Aquí no hay censuras, los únicos comentarios que he editado a lo largo de los años han sido siempre por razones de SPAM (los cuales no edito, los borro directamente) y aquellos que insultan o faltan el respeto a otros (no he tenido casos de racismo, apologías y otros, como es natural, es de sentido común que serían eliminados). Siempre he dicho que aquí todos somos caballeros, y con educación y buenas formas podemos hablar de todo, aunque a veces no estemos de acuerdo.

Pero hace muchos años que entendí que la buena voluntad no vale para todos, y eso obliga por desgracia a optar por medidas que no siempre gustan, y que básicamente coartan de algún modo libertades que de otro modo se podrían tener. Es de lo que hoy hablamos, de la propiedad intelectual, específicamente en este caso del contenido propio que uno genera. Esa es la razón por la cual en el pie de página de mi blog aparece las condiciones generales en las que se distribuye todo el contenido que yo escribo. No, no tengo una página de políticas o condiciones de uso, eso no va conmigo, sólo dejo claro que el contenido en todo mi blog, obviamente a menos que se especifique … Leer Más...

HTTPS no añade legitimidad o credibilidad a una Web, brinda seguridad

Share on Google+Share on FacebookTweet about this on Twitter

Llevo ya días que al despertarme me topo con alguna noticia relativa a HTTPS, supongo que los responsables son Mozilla y Google, que desde primeros de años decidieron aplicar algunas medidas coercitivas en sus navegadores, lo que sucede es que como siempre si el usuario medio no entiende lo que quiere decirle un cartel de advertencia, al final da igual.

 

Brevemente, sobre el mensaje “nuevo” que estas dos compañías han instaurado. Es un ejemplo más que muestra el trabajo que cuesta a veces a los usuarios de perfil medio la diferencia entre seguridad y legitimidad de una página. Muchos empezaron a decir incluso que Google iba a advertir con mensajes a los usuarios sobre que una web no era segura… no tiene nada que ver con eso, de echo tanto Firefox como Chrome muestran exactamente lo que tienen que mostrar, la lectura que otros le quieran dar es diferente:

La primera es el mensaje que muestra Firefox, el segundo Chrome, este último también traslada un mensaje en la URL. En esencia dicen exactamente lo mismo. Ambas compañías simplemente muestran en pantalla ese mensaje cuando se dan dos circunstancias: La primera, estamos en un formulario que se reconoce un campo de contraseña donde vamos a introducirla. La segunda es que la Web en cuestión en la que vamos a introducir dicha contraseña no está bajo HTTPS con un certificado válido. Dicho de otro modo, al no estar la web bajo HTTPS, los datos que pongamos tanto en la contraseña como en el nombre de usuario, es posible que sean enviados en “texto plano”, es decir, tal como los introducimos, y por ende podrían ser potencialmente interceptados por alguien que “pinchase” la conexión en cualquier punto de esta.

Hay que entenderlo, no significa que la web sea insegura realmente, o que no sea legítimas. Lo que nos avisa es que si nuestra red no es segura (nos están robando WIFI, tenemos un familiar/amigo travieso conectado a ella, usamos una red pública…), alguien podría potencialmente leer ese tráfico, y claro… a lo mejor no importa tanto saber que visitas una web concreta o incluso el contenido de ella, pero si importa y mucho si lo que capturan es la contraseña de tu correo electrónico, de acceso a un servicio. Pero repito, nada tiene que ver con legitimidad o fiabilidad, y es más, esa advertencia puede no ser importante si sabemos perfectamente desde donde nos conectamos.

 

Volviendo al asunto original del artículo, estoy aburrido de leer “noticias” sobre HTTPS, Certificados TLS/SSL, “seguridad”… y casi todos ellos sesgados. El último ha sido esta tarde… no me gusta tirar tierra a nadie y respeto el trabajo de cualquiera, pero creo que hay que ser más riguroso en lo que se escribe, y por citarlos, hablo de un artículo en Xataka. A veces una coma o el modo de decir las cosas no importa y se sobre entiende, pero otras veces el significado es muy diferente sólo con que falte un acento. En este caso, y cito textualmente encontramos el problema de siempre, algunas frases muy poco afortunadas:

“Esto quiere decir, que una dirección web en la que tengas que empezar escribiendo https:// en vez del clásico http:// será siempre mucho más segura, ya que certifica que la web visitada es legítima…”

“Chrome están empezando a señalar como inseguras todas las páginas que no lo utilicen”

Leer Más...

¿Son realmente necesarios los Antivirus? ¿Causan más mal que bien?

Share on Google+Share on FacebookTweet about this on Twitter

Buenas compañeros.

Es de estas veces que… digamos que estás haciendo alguna cosa sin demasiada importancia y sin necesidad de atención, mientras lees algunas publicaciones aquí o allí. Y de pronto me he topado con un artículo publicado por Robert O’Callahan, persona bien conocida (en el mundillo) y que sigo desde hace tiempo, con un gran talento como ingeniero de software, y un poco siempre controvertido. Robert O’Callahan ha sido Ingeniero de Mozilla durante muchos años, siendo una pieza fundamental de ellos, un gran programador, experto en seguridad y bueno… creerme, es cierto que siempre ha sido políticamente incorrecto, pero sabe de lo que habla.

El artículo no tenía desperdicio, animo a todos a leerlo: “ Disable Your Antivirus Software (Except Microsoft’s)“. Cuando cualquiera escribe sobre temas que conoce (o cree conocer), sus palabras pueden ser más o menos escuchadas y tenidas en cuenta por un grupo de seguidores o lectores, pero cuando personas de cierto y conocidas por su trabajo hacen comentarios tan tajantes, se arma un revuelo… y no es para menos.

Para quien no quiera leerse el artículo o vaya regular en Ingles, se lo resumo de forma sencilla:

En primer lugar, O’Callahan aprovecha para recordar que al no estar de momento en Mozilla (espero sinceramente que vuelva), tiene “libertad” en poder expresarse de forma abierta ya que a fin de cuenta no representa ni la opinión ni palabras de Mozilla y está desvinculado de ellos. Esto nos dice que muy posiblemente Mozilla piensa igual en general, sólo que como es normal no puede hacer afirmaciones tales por las repercusiones que tiene, como veremos luego.

A continuación, hace un pequeño resumen exponiendo que los Antivirus, lejos de hacer nuestros sistemas más seguros, por lo general lo que logran es hacerlo más inseguros, crearle agujeros de seguridad, son invasivos, matan el rendimiento y generalmente por raro que parezca no cumplen las normativas básicas de seguridad de software, con un código mal optimizado y problemático. Y desde el punto de vista de ellos como desarrolladores de software, específicamente navegadores Webs, afirma también que una parte muy importante del tiempo dedicado por los desarrolladores es precisamente tener que lidiar con los fallos de seguridad y otros de los propios antivirus, por supuesto da ejemplos de ello.

Muchos han visto esto como un guiño a Microsoft, por Windows Defender, pero en lo personal no creo que sea así, y en parte lo explica. La gran diferencia entre Windows Defender (En Windows) y cualquier otro AV como pueda ser Symantec, Avira, Avast… (pongo 3, pero en general cualquiera), es que Defender en primer lugar está integrado en el sistema y mucho más optimizado, en segundo lugar Microsoft por política somete a todo su software a estrictos controles de seguridad y estándares que deben de seguir, cosa que la mayoría de empresas de software no hacen, y en tercer lugar porque para lo que sirve un AV, Defender cumple con lo que necesita cualquiera. Dicho de otro modo… Windows ya tiene su propio AV/AntiMalware que funciona bien, para que usar software de terceros que puede provocar todo tipo de problemas.

Bien… cualquier que me conozca, sabrá lo que pienso al respecto: Estoy totalmente de acuerdo con sus palabras.

Es complicado hacer este tipo de afirmaciones y más para ellos, como bien dice. los desarrolladores de Software tienen que trabajar a fin de … Leer Más...

Let’s Encrypt

Share on Google+Share on FacebookTweet about this on Twitter

le-logo-wide

Llevo ya un tiempo queriendo escribir algunas palabras sobre esto por dos motivos. El primero, debido a la gran importancia que a día de hoy debería de ser mantener las comunicaciones seguras entre los equipos de los usuarios y los servidores remotos, y en segundo lugar por lo que, desde mi opinión claro está, es la gran labor que han llevado a cabo y están realizando todos los que están detrás del proyecto de “Let’s Encrypt”.

Como es costumbre, vamos a hacer una pequeña introducción para explicar en primer lugar un poquito de todo esto para quienes no sepan de ello, y para los que sepan y aun estén recelosos clarar algunas dudas.

 

¿Que es Let’s Encrypt?

La versión corta y reducida es la que podemos encontrar en su propia web: https://letsencrypt.org/:

“Let’s Encrypt is a new Certificate Authority: It’s free, automated, and open” (Let’s Encyrpt es una nueva Autoridad de Certificación. es gratuito, automatizado y abierto).

Internet no se construyó en su origen para ser seguro, de tal modo que en su versión simplista se trataba de poder enviar información desde un punto a otro. Los años, y más los tiempos que corren, demostraron que eso está muy bien, pero se hacía necesario algún sistema de cifrado punto-a-punto que asegurase dicha comunicación. Los cifrados punto-a-punto se denominan así (ahora de moda con las aplicaciones de mensajería instantánea) porque el contenido se cifra/descifra en los extremos, es decir… se cifra en nuestros dispositivos y circula de ese modo hasta llegar al destino, haciendo que sea, en teoría siempre, poder “leer” dicho tráfico si alguien intercepta la comunicación en cualquier punto de dicha travesía. De este modo tan solo el origen y el destino de dicha comunicación podrían entender lo que están enviando/recibiendo. Esto fue vital para Internet, y así nació HTTPS, que todos estamos hartos de ver.

HTTPS se fundamenta en el uso de los protocolos TLS y SSL, los cuales a su vez su funcionamiento radica en el uso de lo que llamamos certificados digitales para poder crear un entorno de cifrado asimétrico (ya sea RSA, ECC…). Esto ya hablé bastante en su día, así que no voy a repetir el grueso de todo aquello, quien le interese, creo que estaba en el artículo de Seguridad: Encriptación y Autentificación (cap 4). Abreviando mucho, digamos que, al menos, el servidor al cual los usuarios se conectan para iniciar su comunicación de forma segura debe de poseer un certificado digital que será enviado al cliente al iniciar la conexión y que le dará a este toda la información necesaria para realizar esa conexión, como la clave pública que usará el cliente para cifrar la clave simétrica de sesión, los algoritmos a usar para el cifrado… e igualmente importante, los datos necesarios para que el usuario PUEDA VERIFICAR LA CORRECTA IDENTIDAD DEL SERVIDOR AL QUE SE CONECTA, empezando por el CA (Autoridad de Certificación) que emite dicho certificado.

El cifrado es esencial si queremos que nuestras comunicaciones no puedan ser leídas en ningún punto hasta su destino (evidentemente sobre todo cuando estamos transmitiendo información que pueda ser confidencial o importante como usuarios/contraseñas, tarjetas de créditos, datos personales..). Esto no es un problema para TLS/SSL, y a día de hoy si la implementación TLS/SSL es buena y usando las versiones más actuales y otros, el cifrado es, en la práctica, imposible … Leer Más...

Volver a arriba

Sobre Mí

Cambiar a la versión para móviles

Creative Commons License
Alma Oscura por Theliel is licensed under a Creative Commons Reconocimiento-No comercial-Sin obras derivadas 3.0 Unported License.
Basado en el trabajo de blog.theliel.es.
Para otros permisos que puedan exceder el ámbito de esta licencia, contactar en blog.theliel.es/about/contactar.