Задачка

Тема в разделе "WASM.A&O", создана пользователем dgs, 25 мар 2009.

  1. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Здравствуйте, наткнулся на задачу, помогите пожалуйста... В одной из картинок зашифровано сообщение, другая является ключом (эталоном). Алгоритм шифрования прост: в красный канал каждого пикселя ключевой картинки добавлена уменьшенная в 100 раз интенсивность этого же
    пикселя из картинки с сообщением (она черно-белая). Размер картинок, естественно, одинаков. Формат - bmp. Задача: создать алгоритм расшифровки и получить сообщение...
     
  2. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Чёт. архив помойму битый...
     
  3. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    не норм.
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Белибердень какая-то у меня получается. В красном канале данные отличаются. Но что должно получится при делении на 100? Если картинка чёрно белая (0;1), то тоже хрень будет. Условие непонятное.
     
  5. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
  6. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Насколько я понял, необходимо взять красную составляющую из картинки с шифром, вычесть из нее красную составляющую эталонной картинки(или сделать xor?), умножить полученное на 100, сделать & 255 и записать в файл. Потом преобразовать в bmp.
     
  7. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Начну с того, что интенсивность пикселя это (R+G+B)/3, следовательно вычитаем из красного канала ключевой картинки , красный канал картинки с сообщением и получаем интенсивность пикселя выводной картинки (черно белой) т.е. интенсивность почти тоже самое, что и яркость...
     
  8. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    dgs
    Да там вообще по сути большой разницы нету, как считать RGB результата. В исходных картинках разность соответствующих пикселей имеет всего три варианта: 0,8,9. Назначаем каждой из разностей любой цвет и что бы мы ни назначили, а получим всё равно фигню всякую. Что-то посередине похоже на текст, но прочитать его нереально, а вот убить глаза — вполне.
     
  9. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    Ясно, в общем я без надежен в решение этой проблемы?
     
  10. agrischuk

    agrischuk New Member

    Публикаций:
    0
    Регистрация:
    12 янв 2009
    Сообщения:
    47
    В задаче не сказано как кодируется якрость/интенсивность скрытой картинки. Как тут тебе уже подсказали, это не красный канал.

    Вариантов масса. Например берешь наугад три пикселя:

    R1k-R1m = R1m * x + G1m * y + B1m * z
    R2k-R2m = R2m * x + G2m * y + B2m * z
    R3k-R3m = R3m * x + G3m * y + B3m * z

    где m - message, k - key
    Решаешь систему уравнений, получаешь коеф. x, y, z. Считаешь по ним интенсивность скрытой картинки. Тоже самое для двух составляющих, или вообще нелинейная зависимость.
     
  11. dgs

    dgs New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    434
    интенсивность пикселя это (R+G+B)/3
     
  12. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Если качать "Opera" - то битый, а если "ReGet", то всё ОК!
     
  13. agrischuk

    agrischuk New Member

    Публикаций:
    0
    Регистрация:
    12 янв 2009
    Сообщения:
    47
    RGB чего? Сообщения? Точно нет. Между разностями красного канала и даной картинкой есть зависимость, по которой нужно восстановить интенсивность скрытой картинки.
    Тоесть I = F(Rk, Rm, Gm, Bm). Вот эту самую F тебе и нужно найти.
    Процесс нахождения имеет два принципиальных момента:
    1. Выбор вида функции F (линейная, полином, етц)
    2. Применение метода регрессии, как вариант метода наименьших квадратов.

    Приаттачил результат применения МНК к линейной функции. Если вглядываться, можно увидеть тень скрытого текста :)

    Возьми какой нибудь матлаб или октав, все руками делать - запаришься.
     
  14. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    ИМХО эта задачка не на расшифровку и не на декодирование - черно-белая картинка лежит в R-канале в чистом виде. Однако, если максимальную интенсивность в 255 уменьшить в 100 раз, у нас останется всего пару бит динамического диапазона. Этого хватило бы для идеальной передачи двуцветного изображения, но похоже они запихнули туда другую полноцветную картинку, в результате чего почти вся полезная инфа потерялась.

    Вот что получилось у меня на скорую руку... вопрос теперь чисто культурологический, что за эмблема, на каком языке подпись, шо за земля так нежно убаюкана обвалакивающей материей... Сами мы не местные...
     
  15. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Физики юморные попались, типа, все ништяк, пока жива Одесса!
     
  16. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    В общем, я был не совсем прав... При вычитании одной картинки из другой получается хороший монохром, но он растровый, причем растр до чрезвычайности грубый. Как извлечь из него правильные полутона не знаю. Еще вариант прочтения:

    Пока живу - надеюсь.
     
  17. Shur

    Shur New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2002
    Сообщения:
    9
    Адрес:
    Moscow
    Да, расшифровать не проблема. Проблема прочитать =)
     
  18. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Правильная расшифровка должна читаться ляхко и не оставлять двусмысленностей. Теперь понятно что дело не в простом вычитании. А с какого бодуна в разности присутствует бошка тигра, которую я принял за эмьлему ООН? Почему в разности присутсивует голова ?
     
  19. Shur

    Shur New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2002
    Сообщения:
    9
    Адрес:
    Moscow
    А это не разность. То есть я взял разность и убил в ней повторяющийся орнамент. А оставшиеся точки пометил на исходной картинке.
    Код (Text):
    1.     int pat[4][4][256];
    2.     //unsigned char *k,*s; //bitmaps
    3.     unsigned char kr,sr;  //red components
    4.  
    5.     int i,j,c;
    6.     for(c=0;c<256;c++)
    7.         for(i=0;i<4;i++)
    8.             for(j=0;j<4;j++)
    9.                 pat[i][j][c]=0;
    10.  
    11.     for(i=0;i<179;i++)
    12.         for(j=0;j<240;j++)
    13.         {
    14.             kr=*(k+(j+i*240)*3+2);
    15.             sr=*(s+(j+i*240)*3+2);
    16.             if(sr==kr) pat[i%4][j%4][kr]--;
    17.             if(sr>kr) pat[i%4][j%4][kr]++;
    18.         }
    19.    
    20.     for(i=0;i<179;i++)
    21.         for(j=0;j<240;j++)
    22.         {
    23.             kr=*(k+(j+i*240)*3+2);
    24.             sr=*(s+(j+i*240)*3+2);
    25.             unsigned char must=kr;
    26.             if(pat[i%4][j%4][kr]>0) must+=8;
    27.             if(must!=sr && must+1!=sr)
    28.             {
    29.                 //mark pixel
    30.             }
    31.         }
    Несколько пикселей, возможно, можно пометить по другому (те, что с большой яркостью, >~200). Но погоды они не сделают.
     
  20. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Написанно "Покажи как сделал".
    Хотя в последнем слове не уверен, начинается вроде на "сде", а кончается на "*та".