Задачка

Discussion in 'WASM.A&O' started by dgs, Mar 25, 2009.

  1. dgs

    dgs New Member

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

    Proteus Member

    Blog Posts:
    0
    Joined:
    Jun 19, 2004
    Messages:
    344
    Location:
    Russia
    Чёт. архив помойму битый...
     
  3. dgs

    dgs New Member

    Blog Posts:
    0
    Joined:
    Jun 23, 2008
    Messages:
    434
    не норм.
     
  4. Booster

    Booster New Member

    Blog Posts:
    0
    Joined:
    Nov 26, 2004
    Messages:
    4,860
    Белибердень какая-то у меня получается. В красном канале данные отличаются. Но что должно получится при делении на 100? Если картинка чёрно белая (0;1), то тоже хрень будет. Условие непонятное.
     
  5. dgs

    dgs New Member

    Blog Posts:
    0
    Joined:
    Jun 23, 2008
    Messages:
    434
  6. twgt

    twgt New Member

    Blog Posts:
    0
    Joined:
    Jan 15, 2007
    Messages:
    1,494
    Насколько я понял, необходимо взять красную составляющую из картинки с шифром, вычесть из нее красную составляющую эталонной картинки(или сделать xor?), умножить полученное на 100, сделать & 255 и записать в файл. Потом преобразовать в bmp.
     
  7. dgs

    dgs New Member

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

    l_inc New Member

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

    dgs New Member

    Blog Posts:
    0
    Joined:
    Jun 23, 2008
    Messages:
    434
    Ясно, в общем я без надежен в решение этой проблемы?
     
  10. agrischuk

    agrischuk New Member

    Blog Posts:
    0
    Joined:
    Jan 12, 2009
    Messages:
    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

    Blog Posts:
    0
    Joined:
    Jun 23, 2008
    Messages:
    434
    интенсивность пикселя это (R+G+B)/3
     
  12. S_Alex

    S_Alex Alex

    Blog Posts:
    0
    Joined:
    Aug 27, 2004
    Messages:
    561
    Location:
    Ukraine
    Если качать "Opera" - то битый, а если "ReGet", то всё ОК!
     
  13. agrischuk

    agrischuk New Member

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

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

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

    persicum New Member

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

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

    persicum New Member

    Blog Posts:
    0
    Joined:
    Feb 2, 2007
    Messages:
    947
    Физики юморные попались, типа, все ништяк, пока жива Одесса!
     
  16. persicum

    persicum New Member

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

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

    Shur New Member

    Blog Posts:
    0
    Joined:
    Dec 7, 2002
    Messages:
    9
    Location:
    Moscow
    Да, расшифровать не проблема. Проблема прочитать =)
     
  18. persicum

    persicum New Member

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

    Shur New Member

    Blog Posts:
    0
    Joined:
    Dec 7, 2002
    Messages:
    9
    Location:
    Moscow
    А это не разность. То есть я взял разность и убил в ней повторяющийся орнамент. А оставшиеся точки пометил на исходной картинке.
    Code (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

    Blog Posts:
    0
    Joined:
    Jan 15, 2007
    Messages:
    1,494
    Написанно "Покажи как сделал".
    Хотя в последнем слове не уверен, начинается вроде на "сде", а кончается на "*та".