Hi Mike,mikey11 wrote:I have completed both images for the rpi v2 and v3.
yeah, I got kind of stuck too, reading the traditional braile cell manufactoring: http://www3.imperial.ac.uk/pls/portalli ... 449703.PDF . I was thinking to create a kind of mini-plotter from old DVD drives, and push the cells up seriell (one by one). that could work for simple symbols like arrows, probably still slow,...still thinking. Ah, I've got 3D-Printer, a CNC and carpentry here. Just in case...mikey11 wrote:Hi mc700bi
We welcome intrusions and new ideas...
Hi mc007ibi, what about a tongue electrode display instead of an electro-mechanical tactile display? https://dustinvenini.wordpress.com/rese ... stitution/mc007ibi wrote:Its pneumatic based and consumes a hell of space. I would be happy if someone could come up with an alternative idea.
couldn't resist to search pictures on it. seems pretty hard for both, builder & consumer. but yeah, ideally you would inject them under the skin and stimulate that cells from something on the arm.seeingwithsound wrote:Hi mc007ibi, what about a tongue electrode display instead of an electro-mechanical tactile display? https://dustinvenini.wordpress.com/rese ... stitution/mc007ibi wrote:Its pneumatic based and consumes a hell of space. I would be happy if someone could come up with an alternative idea.
Thanks to Peter for the acknowledgment. Our tongue system is actually a USB device currently. As long as you can send a string to the device with a corresponding 0 or 1 for each pixel you can use anything for input. It currently presents thresholded camera images at about 50Hz with image updates at about 12Hz.mikey11 wrote:My hope is a tongue system will be made as a USB device. Then you could program it for all kinds of input.
Hi Mike,mikey11 wrote:In less than 7 days I expect to put out the raspivoice contrast update so we can have the update system tested for real.
Code: Select all
#define CONTRAST 2 /* Contrast enhancement, 0=none */
int px;
double avg;
avg = 0.0;
for (i=0; i<M; i++) {
for (j=0; j<N; j++) {
avg += gray.at<uchar>(M-1-i,j);
}
}
avg = avg / (N * M);
for (i=0; i<M; i++) {
for (j=0; j<N; j++) {
px = gray.at<uchar>(M-1-i,j);
px += CONTRAST*(px - avg);
if (px > 255) px = 255;
if (px < 0) px = 0;
gray.at<uchar>(M-1-i,j) = px;
if (px == 0) A[i][j] = 0;
else A[i][j] = pow(10.0,(px/16-15)/10.0); /* 2dB steps */
}
}
Hi Mike,seeingwithsound wrote:After porting the above code snippet you will only be left with an "if (opt.contrast != 0.0) { }" branch where the default value for opt.contrast will now be 2.0.
Code: Select all
/* Set default value for opt.contrast to 2.0 */
if (opt.contrast != 0.0)
{
float avg = 0.0;
for (int y = 0; y < processedImage.rows; y++)
{
for (int x = 0; x < processedImage.cols; x++)
{
avg += processedImage.at<uchar>(y, x);
}
}
avg = avg / (processedImage.rows * processedImage.cols);
for (int y = 0; y < processedImage.rows; y++)
{
for (int x = 0; x < processedImage.cols; x++)
{
int mVal = processedImage.at<uchar>(y, x);
processedImage.at<uchar>(y, x) = cv::saturate_cast<uchar>(mVal + opt.contrast*(mVal - avg));
}
}
}
No, it doesn't, or else I would not have bothered. Algorithms are my specialty.mikey11 wrote:I did not use your code because raspivoice already has a command line flag for changing the contrast. I used this. Please see that it meets the needs.
Hi Mike,mikey11 wrote:Also, as this will be the first "real" update, please let me know of bugs and errors.
Return to “Assistive technology and accessibility”
Users browsing this forum: No registered users and 1 guest