Увеличение динамического диапазона карты стереоизображения [дубликат]

Вы не можете сравнивать массивы напрямую, как это

array1==array2

Вы должны сравнить их char-by-char; для этого вы можете использовать функцию и вернуть значение boolean (True: 1, False: 0). Затем вы можете использовать его в тестовом состоянии цикла while.

Попробуйте следующее:

#include <stdio.h>
int checker(char input[],char check[]);
int main()
{
    char input[40];
    char check[40];
    int i=0;
    printf("Hello!\nPlease enter a word or character:\n");
    scanf("%s",input);
    printf("I will now repeat this until you type it back to me.\n");
    scanf("%s",check);

    while (!checker(input,check))
    {
        printf("%s\n", input);
        scanf("%s",check);
    }

    printf("Good bye!");

    return 0;
}

int checker(char input[],char check[])
{
    int i,result=1;
    for(i=0; input[i]!='\0' || check[i]!='\0'; i++) {
        if(input[i] != check[i]) {
            result=0;
            break;
        }
    }
    return result;
}
8
задан Ander Biguri 20 October 2014 в 17:33
поделиться

3 ответа

Преобразование изображения в двойное (двойная точность) разрешит проблему, потому что команда imread взяла изображение по умолчанию в формате unit8 (unsigned int).

4
ответ дан M.Zaman 22 August 2018 в 19:22
поделиться
  • 1
    Я предпочел бы использовать im2double вместо того, чтобы просто кастинг как double, поскольку im2double также нормализует интенсивности, чтобы они соответствовали между [0,1]. Простое нажатие на double не будет делать этого. Кроме того, загрузка imread в изображении в "по умолчанию" uint8 технически неверен. Точность каждого пикселя определяется в заголовке изображения, которое imread анализирует и анализирует. Например, TIF может быть 8, 16 или 24 или 32 бит. Просто большинство изображений используют 8 бит на интенсивность / цвет, поэтому мы, естественно, думаем, что это «по умолчанию». – rayryeng 22 October 2014 в 17:18
  • 2
    но im2double не будет работать в этом случае, потому что интенсивности будут лежать в [0,1], но мы не хотим нормализовать интенсивности, если мы сделаем так, что получившееся изображение будет черным. Я пробовал это и получил точные результаты , – M.Zaman 1 November 2014 в 09:48
  • 3
    Полная чепуха. imshow для изображений типа double - , предназначенных для , для интенсивностей между [0,1], которые визуализируют для интенсивностей между черным и белым. Тот, кто дал вам +1 голос за ваш комментарий, не знает, о чем идет речь. – rayryeng 17 December 2014 в 18:09

Проблема заключается в том, что вы не показываете результат правильно.

Ваш результат находится в диапазоне 0-31, но вам нужно преобразовать его в 0-255 для его построения!

do

imshow(mat2gray(z))

enter image description here [/g0]

3
ответ дан Ander Biguri 22 August 2018 в 19:22
поделиться
  • 1
    Почему результат в диапазоне 0-31? – M.Zaman 20 October 2014 в 17:39
  • 2
    Поскольку вы применяете фильтр журнала, и фильтр не нормализует результат. – Ander Biguri 20 October 2014 в 17:43
  • 3
    @AnderBiguri - вы также можете сделать imshow(z, []), что будет контрастировать с нормализацией результатов для отображения, где минимальное и максимальное значения будут отображаться на [0,1]. В противном случае, хорошее место! – rayryeng 20 October 2014 в 18:02
  • 4
    преобразование изображения в двойное от единицы по умолчанию8 также решит проблему. – M.Zaman 21 October 2014 в 16:00
  • 5
    @ M. Zaman Вам нужно быть осторожным, как вы конвертируете в двойное. Просто делать double(z); не решит проблему, потому что у вас будут значения, превышающие 1, и будет насыщать изображение при попытке его отображения. Вместо этого используйте im2double, чтобы сравнить нормализацию интенсивности с [0,1]. – rayryeng 22 October 2014 в 17:13

Лучший способ решить эту проблему - не изменить изображение, а изменить способ отображения imshow. Попробуйте это:

>> imshow(z, [0, 31]);

Или, еще лучше, попробуйте это:

>> imshow(z, []);

, который автоматически масштабирует изображение, сопоставляя минимальное значение с 0 и максимальное значение 255. [/ д2]

2
ответ дан Dima 22 August 2018 в 19:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: