def test_images_different_shape(self): cover_work = Mock(shape=(2, 2)) # watermaked work (stego_work) ws_work = Mock(shape=(2, 3)) with self.assertRaises(ValueError): metrics.psnr(cover_work, ws_work)
def pnsr_ber_index( hider_factory, cover_work, data, index, step, *args, attacks=None, reference_psnr=44, **kwargs): def get_extractor(extractor, index): def wrapper(ws_work): return extractor(ws_work, index=index) return wrapper index = int(round(index)) step = int(round(step)) data = utils.char2bin(data) hider = hider_factory.build(step, *args, **kwargs) ws_work = hider.insert(cover_work, data, index=index) psnr = imperceptibility.psnr(cover_work, ws_work) watermark = hider.extract(ws_work, index=index) if attacks: extract = get_extractor(hider.extract, index) ber = ber_mean(extract, ws_work, watermark, attacks) else: ber = robustness.ber(watermark, data) return psnr, ber
def test_with_zero_mse(self, mock_mse): cover_work = np.array([[2.2, 3.3], [5.5, 6.6]]) # watermaked work (stego_work) ws_work = np.array([[4.4, 7.7], [9.9, 10.0]]) psnr = metrics.psnr(cover_work, ws_work) np.testing.assert_almost_equal(psnr, 54.151403522, 3)
def test_with_custom_max_value(self, mock_mse): ''' Testing Peak Signal-to-Noise Ratio (PSNR) ''' cover_work = Mock() ws_work = Mock() psnr = metrics.psnr(cover_work, ws_work, max=200) np.testing.assert_almost_equal(psnr, 26.020599913, 3)
def test_with_non_zero_mse(self, mock_mse): ''' Testing Peak Signal-to-Noise Ratio (PSNR) ''' cover_work = Mock() ws_work = Mock() psnr = metrics.psnr(cover_work, ws_work) np.testing.assert_almost_equal(psnr, 28.130, 3)
def psnr(swarm, cover_work, data, get_ws_work): ''' psnr(swarm, block, msg) => np.array: return swarm fitness fitness is related to PSNR metric between cover work an watermarked (stego) work wich is obtained with (get_ws_work) callback. This function recive a swarm particle, cover work and data ''' fitness = np.empty(swarm.shape[0]) for i, particle in enumerate(swarm): ws_work = (particle, cover_work, data) try: psnr = imperceptibility.psnr(cover_work, ws_work) except: psnr = 0 finally: fitness[i] = -psnr return fitness